Aufrufen statischer Methoden mit Reflection
In .NET ist es üblich, statische Klassen zu haben, die Hilfs- oder Erweiterungsmethoden bereitstellen. Es stellt sich die Frage: Wie können wir diese statischen Methoden mithilfe von Reflektion aufrufen?
Wie das bereitgestellte Codefragment zeigt, können nicht statische Methoden mithilfe von Reflektion instanziiert und aufgerufen werden. Beim Umgang mit statischen Methoden ist jedoch ein alternativer Ansatz erforderlich.
Der Schlüssel liegt im Verständnis, dass das erste Argument der MethodInfo.Invoke-Methode für statische Methoden ignoriert wird. Anstatt also eine Instanz der Klasse zu erstellen, können wir einfach null als erstes Argument übergeben.
Hier ist ein aktualisierter Codeblock, der zeigt, wie statische Methoden mithilfe von Reflektion aufgerufen werden:
foreach (var tempClass in macroClasses) { // Call the static "Run" method using reflection tempClass.GetMethod("Run").Invoke(null, null); }
Für zusätzliche Sicherheit möchten Sie möglicherweise sicherstellen, dass die Methode tatsächlich statisch ist, wenn Sie GetMethod aufrufen:
tempClass.GetMethod("Run", BindingFlags.Public | BindingFlags.Static).Invoke(null, null);
Mit diesem Ansatz können Sie jede statische Methode aufrufen Führen Sie die Methode aus dem angegebenen Namespace aus und bieten Sie so eine flexible Möglichkeit, Makros oder Dienstprogrammfunktionen auszuführen, ohne dass eine direkte Klasseninstanziierung erforderlich ist.
Das obige ist der detaillierte Inhalt vonWie kann ich statische Methoden mithilfe von Reflection in .NET aufrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!