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

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

Susan Sarandon
リリース: 2025-01-25 05:32:13
オリジナル
804 人が閲覧しました

How Can I Use Reflection in C# to Invoke Private Methods?

C# リフレクションを使用したプライベート メソッドへのアクセス

C# では、通常、プライベート メソッドはカプセル化とセキュリティ上の理由から隠されています。 ただし、実行時にこれらのプライベート メソッドを動的に呼び出すことが必要になる状況が発生する場合があります。 ここで反省の力が役に立ちます。

標準の GetMethod() 呼び出しは、パブリック、保護された、内部メソッドのみを取得します。プライベート メソッドにアクセスするには、オーバーロードされたバージョンの GetMethod() を使用し、正しい BindingFlags.

を指定する必要があります。

解決策:

重要なのは、BindingFlags 呼び出し内で適切な GetMethod() を使用することです。 その方法は次のとおりです:

<code class="language-csharp">MethodInfo dynMethod = this.GetType().GetMethod("Draw_" + itemType, 
    BindingFlags.NonPublic | BindingFlags.Instance);
dynMethod.Invoke(this, new object[] { methodParams });</code>
ログイン後にコピー

このコード スニペットは、プライベート メソッド (「Draw_」 itemType を使用して動的に名前が付けられます) を取得し、dynMethod.Invoke() を使用してそれを呼び出します。

BindingFlags について:

BindingFlags 列挙は、検索に含めるメンバーを制御します。プライベート メソッド呼び出しの場合、BindingFlags.NonPublicBindingFlags.Instance が重要です。

  • BindingFlags.NonPublic: このフラグには非公開メンバー (プライベートおよび保護) が含まれます。
  • BindingFlags.Instance: このフラグは、静的メソッドを除くインスタンス メソッドの検索を制限します。

BindingFlags の詳細:

BindingFlags 列挙とそのさまざまなオプションの詳細については、Microsoft の公式ドキュメントを参照してください [ドキュメントの URL をここに挿入]。

このアプローチにより、開発者は同じクラス インスタンス内からプライベート メソッドを動的に呼び出すことができ、クラス メンバーの高度なランタイム操作の可能性が広がります。

以上がC#でリフレクションを使用してプライベートメソッドを呼び出すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート