リフレクションを使用してプライベートメソッドを呼び出すにはどうすればいいですか? 質問する

リフレクションを使用してプライベートメソッドを呼び出すにはどうすればいいですか? 質問する

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

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

この場合、GetMethod()プライベート メソッドは返されません。プライベート メソッドを見つけるには、何BindingFlagsを指定する必要がありますか?GetMethod()

ベストアンサー1

オーバーロードされたコードを使用するようにコードを変更するだけですバージョンGetMethodBindingFlags を受け入れる:

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

これがBindingFlags 列挙のドキュメント

おすすめ記事