ホームページ >バックエンド開発 >C++ >C# でリフレクションを使用してプライベート メソッドを動的に呼び出すにはどうすればよいですか?

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

Barbara Streisand
Barbara Streisandオリジナル
2025-01-25 05:26:13416ブラウズ

How Can I Dynamically Invoke Private Methods Using Reflection in C#?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。