C# リフレクションを使用したプライベート メソッドへのアクセス
リフレクションは、プライベート メソッドと動的に対話するための強力な方法を提供します。 ただし、標準の GetMethod()
関数だけではプライベート メンバーにアクセスできません。 この制限は、BindingFlags
列挙を使用することで克服されます。
解決策:
プライベート メソッドを取得するには、GetMethod()
呼び出しを変更して必要な BindingFlags
を含めます。 この例では、次の方法を示します。
<code class="language-csharp">MethodInfo dynMethod = this.GetType().GetMethod("Draw_" + itemType, BindingFlags.NonPublic | BindingFlags.Instance);</code>
ここで、BindingFlags.NonPublic
はプライベート メソッドが検索に含まれることを保証し、BindingFlags.Instance
はインスタンス メソッド (静的メソッドではなく) を探していることを指定します。 これらのフラグを使用すると、GetMethod()
はプライベート メソッドを正常に見つけます。
その後、返された Invoke()
オブジェクトの MethodInfo
メソッドを使用して、必要なパラメーターを指定してプライベート メソッドを呼び出します。
以上がC# でリフレクションを使用してプライベート メソッドを動的に呼び出すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。