Heim > Backend-Entwicklung > C++ > Kann Reflection auf private Klassenfelder zugreifen?

Kann Reflection auf private Klassenfelder zugreifen?

Mary-Kate Olsen
Freigeben: 2025-01-21 23:22:12
Original
786 Leute haben es durchsucht

Can Reflection Access Private Class Fields?

Mit Reflection auf Mitglieder privater Kurse zugreifen

Problem:

Ist es möglich, mit Reflection auf die privaten Felder einer Klasse zuzugreifen, beispielsweise auf das Feld _bar im folgenden Code?

<code class="language-csharp">class Foo
{
    [SomeAttribute]
    private string _bar;

    public string BigBar
    {
        get { return this._bar; }
    }
}</code>
Nach dem Login kopieren

Lösung:

Ja, Reflection ermöglicht den Zugriff auf private Felder. So rufen Sie private Felder mit BindingFlags ab:

<code class="language-csharp">FieldInfo[] fields = myType.GetFields(BindingFlags.NonPublic | BindingFlags.Instance);</code>
Nach dem Login kopieren

BindingFlags.NonPublic schließt nicht öffentliche Mitglieder (wie private Felder) ein und BindingFlags.Instance stellt sicher, dass nur Instanzfelder zurückgegeben werden. Das fields-Array enthält dann das private _bar-Feld.

Das obige ist der detaillierte Inhalt vonKann Reflection auf private Klassenfelder zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage