リフレクションを使用してプライベート クラス メンバーにアクセスする
問題:
リフレクションを使用してクラスのプライベート フィールド (たとえば、以下のコードの _bar
フィールド) にアクセスすることは可能ですか?
<code class="language-csharp">class Foo { [SomeAttribute] private string _bar; public string BigBar { get { return this._bar; } } }</code>
解決策:
はい、Reflection ではプライベート フィールドへのアクセスが許可されています。 BindingFlags
を使用してプライベート フィールドを取得する方法は次のとおりです:
<code class="language-csharp">FieldInfo[] fields = myType.GetFields(BindingFlags.NonPublic | BindingFlags.Instance);</code>
BindingFlags.NonPublic
には非パブリック メンバー (プライベート フィールドなど) が含まれており、BindingFlags.Instance
はインスタンス フィールドのみが返されることを保証します。 fields
配列にはプライベート _bar
フィールドが含まれます。
以上がリフレクションはプライベート クラス フィールドにアクセスできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。