Heim > Backend-Entwicklung > C++ > Wie kann ich mithilfe von Reflection in .NET auf private Felder zugreifen?

Wie kann ich mithilfe von Reflection in .NET auf private Felder zugreifen?

Mary-Kate Olsen
Freigeben: 2025-01-21 23:11:09
Original
177 Leute haben es durchsucht

How Can I Access Private Fields Using Reflection in .NET?

Zugriff auf private Mitglieder über .NET Reflection

In bestimmten Situationen erweist sich die Verwendung von Reflektion für den Zugriff auf private Felder innerhalb eines .NET-Objekts als vorteilhaft. Diese Anleitung veranschaulicht, wie Sie das private Feld _bar mithilfe von Reflektion aus einer Klasse abrufen, trotz seines privaten Zugriffsmodifikators.

Felder mit Reflexion abrufen

Die .NET Reflection API bietet die Methode GetFields(), die ein Array von FieldInfo-Objekten für einen bestimmten Typ zurückgibt. Standardmäßig werden nur öffentliche Felder zurückgegeben. Um auf private Felder zuzugreifen, müssen wir entsprechende Bindungsflags angeben.

Bindungsflags verstehen

Bindungsflags steuern, welche Mitglieder in einen Reflexionsvorgang einbezogen werden. Für den privaten Feldzugang benötigen wir:

  • BindingFlags.NonPublic: Beinhaltet nicht öffentliche Mitglieder (privat, intern, geschützt).
  • BindingFlags.Instance: Enthält Instanzfelder (im Gegensatz zu statischen Feldern).

Codebeispiel: Zugriff auf ein privates Feld

Um auf das private _bar-Feld der Foo-Klasse zuzugreifen:

<code class="language-csharp">Type myType = typeof(Foo);
FieldInfo[] fields = myType.GetFields(BindingFlags.NonPublic | BindingFlags.Instance);

foreach (FieldInfo field in fields)
{
    // Example: Check for a custom attribute
    if (field.IsDefined(typeof(SomeAttribute), false))
    {
        Console.WriteLine($"Found private field: {field.Name}");
    }
}</code>
Nach dem Login kopieren

Wichtiger Hinweis: Die Attributprüfung dient der Demonstration. Reflection ermöglicht den Abruf aller Feldinformationen (Typ, Wert, Modifikatoren usw.). Denken Sie daran, dass der direkte Zugriff auf private Mitglieder die Kapselung zerstören kann und mit Vorsicht verwendet werden sollte.

Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von Reflection in .NET auf private Felder 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