[この記事は19年前に書かれました]
指定の名前のメソッドを実行するには、TypeクラスのInvokeMember()メソッドを使用します。
InvokeMemberの引数はわかりにくいですが、左から 「実行するメソッドの名前、BindingsFlags(以下参照)、Binder、呼び出し元インスタンス、引数」です。
namespace TestSpace
{
  class TestClass
  {
    public void Method(string str)
    {
      Console.WriteLine(str);
    }
  }
}
// publicメソッドを実行
TestClass target = new TestClass();
target.GetType().InvokeMember("Method", BindingFlags.InvokeMethod, null, target, new object[] { "test" });
// privateメソッドの場合は、BindingFlagsに、「BindingFlags.InvokeMethod | BindingFlags.Instance | BindingFlags.NonPublic」を指定。
出力:test
これらは、メソッドの例ですが、プロパティやフィールドに対しても処理可能です。 その場合は、BindingFlagsに、「GetProperty,SetProperty,GetField,SetField」等を使用します。

 
  
  
  
  
コメント