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
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>
Dieser Code -Snippet ruft die private Methode ab (dynamisch mit "Draw_" itemType genannt) und ruft sie dann mit dynMethod.Invoke()
auf.
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. 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!