Reflection nutzen, um private C#-Methoden aufzurufen
Reflection in C# bietet die Möglichkeit, auf private Klassenmethoden zuzugreifen und diese aufzurufen – eine Funktionalität, die normalerweise auf externen Code beschränkt ist. Dies kann in Situationen von Vorteil sein, die dynamische Methodenaufrufe erfordern, abhängig von Laufzeitdaten.
Ihr Code-Snippet verwendet GetMethod()
, um eine Methode anhand des Namens zu finden. Allerdings schließt GetMethod()
standardmäßig private Mitglieder aus. Um private Methoden einzubeziehen, müssen Sie beim Aufruf von BindingFlags
:GetMethod()
ein bestimmtes
<code class="language-csharp">MethodInfo dynMethod = this.GetType().GetMethod("Draw_" + itemType, BindingFlags.NonPublic | BindingFlags.Instance); dynMethod.Invoke(this, new object[] { methodParams });</code>
BindingFlags.NonPublic
stellt sicher, dass nicht öffentliche (private) Methoden in die Suche einbezogen werden, während BindingFlags.Instance
die Suche auf Instanzmethoden beschränkt. Diese Kombination garantiert, dass GetMethod()
die gewünschte private Methode innerhalb der aktuellen Klasseninstanz korrekt identifiziert.
Ausführliche Informationen zum Anpassen Ihrer Methodensuche finden Sie in der C#-Dokumentation zur BindingFlags
-Enumeration. Diese Dokumentation listet umfassend alle verfügbaren Flags zur Verfeinerung der Suche über Methoden, Felder und andere Klassenmitglieder hinweg auf.
Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von Reflection in C# auf private Methoden zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!