Heim > Backend-Entwicklung > C++ > Wie kann ich Reflection in C# verwenden, um private Methoden aufzurufen?

Wie kann ich Reflection in C# verwenden, um private Methoden aufzurufen?

Susan Sarandon
Freigeben: 2025-01-25 05:32:13
Original
804 Leute haben es durchsucht

How Can I Use Reflection in C# to Invoke Private Methods?

Zugriff auf private Methoden mit C# Reflection

In C#sind private Methoden aus Kapselung und Sicherheitsgründen in der Regel versteckt. Es können jedoch Situationen auftreten, in denen dynamisch auf der Laufzeit dynamisch aufzurufen werden. Hier kommt die Reflexionskraft ins Spiel.

Standard GetMethod() ruft nur öffentliche, geschützte und interne Methoden ab. Um auf private Methoden zuzugreifen, müssen Sie die überlastete Version von GetMethod() verwenden und die richtige BindingFlags

angeben

Die Lösung:

Der Schlüssel besteht darin, den entsprechenden BindingFlags innerhalb des GetMethod() -Anrufs zu verwenden. So wie:

<code class="language-csharp">MethodInfo dynMethod = this.GetType().GetMethod("Draw_" + itemType, 
    BindingFlags.NonPublic | BindingFlags.Instance);
dynMethod.Invoke(this, new object[] { methodParams });</code>
Nach dem Login kopieren

Dieser Code -Snippet ruft die private Methode ab (dynamisch mit "Draw_" itemType genannt) und ruft sie dann mit dynMethod.Invoke() auf.

BindingFlags verstehen:

Die BindingFlags Aufzählungskontrollen, die Mitglieder in der Suche enthalten sind. Für den privaten Methodenaufruf sind BindingFlags.NonPublic und BindingFlags.Instance entscheidend:

  • BindingFlags.NonPublic : Dieses Flag enthält nicht öffentliche Mitglieder (privat und geschützt).
  • BindingFlags.Instance : Dieses Flag beschränkt die Suche auf Instanzmethoden ohne statische.

Mehr über BindingFlags:

für detaillierte Informationen zur BindingFlags -Eumeration und seine verschiedenen Optionen finden Sie in der offiziellen Microsoft -Dokumentation [hier die Dokumentations -URL einfügen].

Dieser Ansatz ermöglicht es Entwicklern, private Methoden innerhalb derselben Klasse dynamisch aufzurufen und Möglichkeiten für eine fortgeschrittene Manipulation von Klassenmitgliedern zu eröffnen.

Das obige ist der detaillierte Inhalt vonWie kann ich Reflection in C# verwenden, um private Methoden aufzurufen?. 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