Verwenden Sie Reflection, um Methoden in jeder .net-Bibliothek aufzurufen
Autor:Eve Cole
Aktualisierungszeit:2009-07-01 15:48:58
Die Funktion ist wie folgt, mit Kommentaren, bitte überprüfen Sie es selbst :)
Notiz:
1. ReturnMessage ist eine Klasse, die ich selbst geschrieben habe. Bitte überprüfen Sie meine anderen Artikel auf ihre Funktion. Ich habe diese Klasse auch hinten angehängt.
2. Über NameSpaceAndClassName und MethodName können Sie eine Methode tatsächlich genau lokalisieren. Wenn Sie beispielsweise namespace1.Class1.Main in abc.dll aufrufen, lautet der Aufruf CallAssembly("abc.dll","namespace1.Class1","Main" ,null )
public static ReturnMessage CallAssembly(string Path,string NameSpaceAndClassName,string MethodName,object[] Parameters)
{
versuchen
{
Assembly Ass=Assembly.LoadFrom(Path);// Laden Sie die Datei (nicht auf DLL beschränkt, exe kann auch verwendet werden, solange es sich um .net handelt)
Typ TP=Ass.GetType(NameSpaceAndClassName);//NameSpaceAndClassName ist „namespace.classname“, z. B. „namespace1.Class1“
MethodInfo MI=TP.GetMethod(MethodName);//MethodName ist der aufzurufende Methodenname, z. B. „Main“
Objekt MeObj=System.Activator.CreateInstance(TP);
MI.Invoke(MeObj,Parameters);//Parameters ist die Parameterliste, die beim Aufruf der Zielmethode übergeben wird
return new ReturnMessage(true,"erfolgreich aufgerufen",1);
}
Catch (Ausnahme e)
{
return new ReturnMessage(false,"Eine Ausnahme ist aufgetreten, die Meldung lautet: "+e.Message,-1,e);
}
}
AttachedReturnMessage
öffentliche Klasse ReturnMessage
{
öffentliche ReturnMessage()
{
this.m_Succeed=false;
this.m_Message="";
this.m_Code=-1000;
this.m_Data=null;
}
öffentliche ReturnMessage(bool IsSucceed)
{
this.m_Succeed=IsSucceed;
}
public ReturnMessage(bool IsSucceed,string Message)
{
this.m_Succeed=IsSucceed;
this.m_Message=Nachricht;
}
public ReturnMessage(bool IsSucceed,string Message,int Code)
{
this.m_Succeed=IsSucceed;
this.m_Message=Nachricht;
this.m_Code=Code;
}
public ReturnMessage(bool IsSucceed,string Message,int Code,object Data)
{
this.m_Succeed=IsSucceed;
this.m_Message=Nachricht;
this.m_Code=Code;
this.m_Data=Daten;
}
public ReturnMessage(bool IsSucceed,string Message,int Code,object Data,object[] Datas)
{
this.m_Succeed=IsSucceed;
this.m_Message=Nachricht;
this.m_Code=Code;
this.m_Data=Daten;
this.m_Datas=Daten;
}
//
bool m_Succeed;
string m_Message;
int m_Code;
Objekt m_Data;
object[] m_Datas;
public bool Erfolgreich
{
get{return m_Succeed;}
set{m_Succeed=value;}
}
öffentliche Zeichenfolge Nachricht
{
get{return m_Message;}
set{m_Message=value;}
}
öffentlicher int-Code
{
get{return m_Code;}
set{m_Code=value;}
}
öffentliche Objektdaten
{
get{return m_Data;}
set{m_Data=value;}
}
öffentliches Objekt[] Daten
{
get{return m_Datas;}
set{m_Datas=value;}
}
}
http://www.cnblogs.com/niit007/archive/2006/08/13/475574.html