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