Maison > développement back-end > C++ > Reflection peut-il accéder aux champs de classe privée ?

Reflection peut-il accéder aux champs de classe privée ?

Mary-Kate Olsen
Libérer: 2025-01-21 23:22:12
original
825 Les gens l'ont consulté

Can Reflection Access Private Class Fields?

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal