指定の名前のメソッドを実行

C#

[この記事は17年前に書かれました]

指定の名前のメソッドを実行するには、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」等を使用します。

コメント

タイトルとURLをコピーしました