リフレクションを使用して .net ライブラリのメソッドを呼び出す
著者:Eve Cole
更新時間:2009-07-01 15:48:58
機能は次のとおりです。コメント付きなので、自分で確認してください:)
注記:
1. ReturnMessage は私が書いたクラスです。このクラスの機能については、他の記事も参照してください。
2. NameSpaceAndClassName と MethodName を使用すると、実際にメソッドを正確に見つけることができます。たとえば、abc.dll で namespace1.Class1.Main を呼び出す場合、呼び出しは CallAssembly("abc.dll","namespace1.Class1","Main") になります。 、ヌル)
public static ReturnMessage CallAssembly(string パス、string NameSpaceAndClassName、string MethodName、object[] パラメーター)
{
試す
{
Assembly Ass=Assembly.LoadFrom(Path);//ファイルを読み込みます(dllに限らず、.netであればexeでも可)
Type TP=Ass.GetType(NameSpaceAndClassName);//NameSpaceAndClassName は、「namespace1.Class1」などの「namespace.classname」です。
MethodInfo MI=TP.GetMethod(MethodName);//MethodName は呼び出されるメソッド名 (「Main」など)
オブジェクト MeObj=System.Activator.CreateInstance(TP);
MI.Invoke(MeObj,Parameters);//Parameters はターゲット メソッドを呼び出すときに渡されるパラメータ リストです
return new ReturnMessage(true,"正常に呼び出されました",1);
}
catch(例外 e)
{
return new ReturnMessage(false,"例外が発生しました。メッセージは次のとおりです: "+e.Message,-1,e);
}
}
添付された返信メッセージ
パブリック クラス ReturnMessage
{
public ReturnMessage()
{
this.m_Succeed=false;
this.m_Message="";
this.m_Code=-1000;
this.m_Data=null;
}
public ReturnMessage(bool IsSucceed)
{
this.m_Succeed=IsSucceed;
}
public ReturnMessage(bool IsSucceed,string メッセージ)
{
this.m_Succeed=IsSucceed;
this.m_Message=メッセージ;
}
public ReturnMessage(bool IsSucceed,string メッセージ,int コード)
{
this.m_Succeed=IsSucceed;
this.m_Message=メッセージ;
this.m_Code=コード;
}
public ReturnMessage(bool IsSucceed,string メッセージ,int コード,オブジェクト データ)
{
this.m_Succeed=IsSucceed;
this.m_Message=メッセージ;
this.m_Code=コード;
this.m_Data=データ;
}
public ReturnMessage(bool IsSucceed,string Message,int コード,object Data,object[] Datas)
{
this.m_Succeed=IsSucceed;
this.m_Message=メッセージ;
this.m_Code=コード;
this.m_Data=データ;
this.m_Datas=データ;
}
//
ブール m_成功;
文字列 m_Message;
int m_Code;
オブジェクト m_Data;
object[] m_Datas;
public bool 成功
{
get{return m_Succeed;}
set{m_Succeed=value;}
}
パブリック文字列メッセージ
{
get{return m_Message;}
set{m_Message=value;}
}
public int コード
{
get{m_Code を返す;}
set{m_Code=値;}
}
パブリックオブジェクトデータ
{
get{m_Data を返す;}
set{m_Data=値;}
}
パブリックオブジェクト[] データ
{
get{m_Datas を返す;}
set{m_Datas=値;}
}
}
http://www.cnblogs.com/niit007/archive/2006/08/13/475574.html