Utilice la reflexión para llamar a métodos en cualquier biblioteca .net
Autor:Eve Cole
Fecha de actualización:2009-07-01 15:48:58
La función es la siguiente, con comentarios, compruébalo tú mismo :)
Nota:
1. ReturnMessage es una clase que escribí yo mismo. Consulte mis otros artículos para conocer su función. También adjunté esta clase al final.
2. A través de NameSpaceAndClassName y MethodName, puede localizar con precisión un método. Por ejemplo, cuando llama a namespace1.Class1.Main en abc.dll, la llamada es CallAssembly ("abc.dll", "namespace1.Class1", "Main". ,nulo )
público estático ReturnMessage CallAssembly (ruta de cadena, nombre de espacio de cadena y nombre de clase, nombre de método de cadena, parámetro de objeto [])
{
intentar
{
Assembly Ass=Assembly.LoadFrom(Path);//Cargue el archivo (no limitado a dll, también se puede usar exe, siempre que sea .net)
Escriba TP=Ass.GetType(NameSpaceAndClassName);//NameSpaceAndClassName es "namespace.classname", como "namespace1.Class1"
MethodInfo MI=TP.GetMethod(MethodName);//MethodName es el nombre del método que se llamará, como "Principal"
objeto MeObj=System.Activator.CreateInstance(TP);
MI.Invoke(MeObj,Parameters);//Parámetros es la lista de parámetros que se pasa al llamar al método de destino
devolver nuevo ReturnMessage(true,"llamado exitosamente",1);
}
captura (Excepción e)
{
return new ReturnMessage(false,"Se produjo una excepción, el mensaje es: "+e.Message,-1,e);
}
}
Mensaje de retorno adjunto
clase pública ReturnMessage
{
Mensaje de retorno público()
{
this.m_Succeed=false;
this.m_Message="";
this.m_Code=-1000;
this.m_Data=null;
}
Mensaje de retorno público (bool IsSucceed)
{
this.m_Succeed=Es exitoso;
}
mensaje de retorno público (bool IsSucceed, mensaje de cadena)
{
this.m_Succeed=Es exitoso;
this.m_Message=Mensaje;
}
mensaje de retorno público (bool IsSucceed, mensaje de cadena, código int)
{
this.m_Succeed=Es exitoso;
this.m_Message=Mensaje;
this.m_Code=Código;
}
mensaje de retorno público (bool IsSucceed, mensaje de cadena, código int, datos del objeto)
{
this.m_Succeed=Es exitoso;
this.m_Message=Mensaje;
this.m_Code=Código;
this.m_Data=Datos;
}
mensaje de retorno público (bool IsSucceed, mensaje de cadena, código int, datos del objeto, datos del objeto [])
{
this.m_Succeed=Es exitoso;
this.m_Message=Mensaje;
this.m_Code=Código;
this.m_Data=Datos;
this.m_Datas=Datos;
}
//
bool m_Succeed;
cadena m_Mensaje;
int código_m;
objeto m_Data;
objeto[] m_Datas;
bool público tener éxito
{
obtener {return m_Succeed;}
establecer{m_Succeed=valor;}
}
Mensaje de cadena pública
{
obtener {return m_Message;}
establecer{m_Message=valor;}
}
código int público
{
obtener {return m_Code;}
establecer{m_Code=valor;}
}
datos de objetos públicos
{
obtener {return m_Data;}
establecer{m_Data=valor;}
}
objeto público[] Datos
{
obtener {return m_Datas;}
establecer{m_Datas=valor;}
}
}
http://www.cnblogs.com/niit007/archive/2006/08/13/475574.html