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

Kann Reflection auf private Klassenfelder zugreifen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-21 23:22:12827Durchsuche

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>

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>

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!

Stellungnahme:
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