リフレクションを介したプライベート C# フィールドへのアクセス
オブジェクト指向プログラミングでは、プライベート フィールドによってデータが外部からの直接アクセスから保護されます。 ただし、リフレクションは、必要に応じてこの制限を回避するメカニズムを提供します。
プライベート _bar フィールドへのアクセス
_bar
クラス内のプライベート フィールド Foo
にアクセスする方法を調べてみましょう。このフィールドにはさらにカスタム [SomeAttribute]
の注釈が付けられています。標準の属性取得メソッドはパブリック プロパティでのみ機能するため、_bar
のようなプライベート フィールドはアクセスできません。
プライベートメンバーのロックを解除する
解決策は、リフレクション中に特定のバインディング フラグを利用することにあります。 BindingFlags.NonPublic
は非公開メンバーにアクセスを許可しますが、BindingFlags.Instance
はインスタンス メンバーに焦点を当てた検索を保証します。
コード例
次のコードは、この反射的なアプローチを示しています。
<code class="language-csharp">using System.Reflection; class Program { static void Main() { Type myType = typeof(Foo); FieldInfo[] fields = myType.GetFields( BindingFlags.NonPublic | BindingFlags.Instance); } }</code>
ここで、GetFields
は指定されたバインディング フラグを使用して、パブリック インスタンス フィールドとプライベート インスタンス フィールドの両方を取得します。
概要
リフレクションを適切なバインディング フラグと組み合わせると、プライベート フィールドへのアクセスが可能になります。 この手法は、隠しデータの検査やオブジェクト内部の操作に非常に有益であることが判明し、開発者にコードの分析と操作のための強力なツールを提供します。
以上がリフレクションを使用して C# のプライベート フィールドにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。