Utiliser Reflection pour accéder aux membres d'une classe privée
Problème :
Est-il possible d'utiliser Reflection pour accéder aux champs privés d'une classe, par exemple le champ _bar
dans le code ci-dessous ?
<code class="language-csharp">class Foo { [SomeAttribute] private string _bar; public string BigBar { get { return this._bar; } } }</code>
Solution :
Oui, Reflection permet d'accéder aux champs privés. Voici comment récupérer les champs privés en utilisant BindingFlags
:
<code class="language-csharp">FieldInfo[] fields = myType.GetFields(BindingFlags.NonPublic | BindingFlags.Instance);</code>
BindingFlags.NonPublic
inclut les membres non publics (comme les champs privés) et BindingFlags.Instance
garantit que seuls les champs d'instance sont renvoyés. Le tableau fields
contiendra alors le champ privé _bar
.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!