リフレクション呼び出しの技術サンプル
更新 : 2007 年 11 月
このサンプルでは、パブリック クラスおよびパブリック メソッドを持つ任意のマネージ アセンブリに遅延バインディングを実装する方法の例を示します。コマンド ラインからアセンブリ、型、メソッド、およびパラメータを選択します。サンプルは、アセンブリの読み込み、型やメソッドの検索、渡されたパラメータを使用したメソッド呼び出しを試みます。また、文字列ではないパラメータを受け取るメソッドを呼び出す場合には、必要な型変換も行います。リフレクション クラスを使用すると、この高度な機能が驚くほど簡単に実現できます。このサンプルには、Tester.dll という名前の単純な DLL プロジェクトが含まれています。Tester プロジェクトは、いくつかのメソッドを持つ単純な型を用意していて、Invoke と共に使用します。
このサンプルの使用については、次のトピックを参照してください。
コマンド プロンプトを使用してサンプルをビルドするには
このサンプルの使用言語に対応するサブディレクトリに移動します。
プログラミング言語の選択に応じて、コマンド ラインで、「msbuild InvokeCS.sln」または「msbuild InvokeVB.sln」と入力します。
Visual Studio を使用してサンプルをビルドするには
Windows エクスプローラを開き、このサンプルの使用言語に対応するサブディレクトリに移動します。
使用するプログラミング言語に応じてファイル InvokeCS.sln のアイコンまたは InvokeVB.sln のアイコンをダブルクリックして、そのファイルを Visual Studio で開きます。
[ビルド] メニューの [ソリューションのビルド] をクリックします。
メモ : |
---|
このサンプルでは、コンソール アプリケーションをビルドします。出力を表示するには、これをコマンド プロンプトで実行する必要があります。 Invoke.exe は、呼び出す対象を示すコマンド ライン パラメータを受け取ります。パラメータの指定がない場合は、使用方法の例が表示されます。型のメソッドを呼び出すには、次の構文を使用します。 |
Invoke.exe [Assembly] [Type] [Method] [Parameters...]
サンプルを実行するには
Invoke.exe および Tester.dll が格納されているディレクトリに移動します。
コマンド ラインで「Invoke.exe [アセンブリ] [型] [メソッド] [パラメータ...]」と入力します。
解説
MsBuild ツールにより、2 つのファイル Invoke.exe および Tester.dll がビルドされます。
次の例で、SomeType 型の ShowMessage メソッドは 3 つのパラメータを使用して呼び出されます。次に例を示します。
Invoke.exe Tester.dll Microsoft.Samples.SomeType ShowMessage "This is an example of a message." "Question:" 4
リフレクション呼び出しの詳細については、ソース コード ファイルのコメントを参照してください。
以下の項目に、このサンプルで使用されているクラスおよび技術について簡単に説明します。
リフレクション
Assemblyアセンブリの読み込みおよびそのアセンブリに含まれている型の検索に使用します。
TypeMemberInfo インスタンスの配列の取得、および必要に応じてインスタンスの作成時の型への参照に使用します。
MethodInfo パラメータやメソッド名など、単一のメソッドに関する情報の取得に使用します。このサンプルでは、この型から取得した情報とコマンド ラインで入力された情報を比較します。メソッドの呼び出しには MethodInfo も使用します。
ParameterInfo 主にメソッド パラメータの型の検索に使用します。これにより、サンプルでコマンド ライン引数を適切にキャストできます。
Activator インスタンス メソッドの呼び出しが必要であるとサンプルが判断した場合に、その型のインスタンスを作成するために使用します。
システム