1. ホーム
  2. c#

[解決済み] リフレクションを使ってプライベートメソッドを呼び出すには?

2022-03-15 22:48:59

質問

私のクラスにはプライベートメソッドのグループがあり、入力値に基づいて動的に1つのメソッドを呼び出す必要があります。呼び出すコードと呼び出されるメソッドの両方が、同じインスタンスに存在します。コードは次のようなものです。

MethodInfo dynMethod = this.GetType().GetMethod("Draw_" + itemType);
dynMethod.Invoke(this, new object[] { methodParams });

この場合 GetMethod() はプライベートメソッドを返しません。何 BindingFlags に提供する必要があります。 GetMethod() プライベートメソッドの場所を特定できるようにするため?

どのように解決するのですか?

コードを変更して、オーバーロードされた のバージョンです。 GetMethod で、BindingFlags を受け取ります。

MethodInfo dynMethod = this.GetType().GetMethod("Draw_" + itemType, 
    BindingFlags.NonPublic | BindingFlags.Instance);
dynMethod.Invoke(this, new object[] { methodParams });

ここで BindingFlags列挙のドキュメント .