Heim >Backend-Entwicklung >C++ >Wie rufe ich statische Methoden mithilfe von Reflection in C# auf?
Aufrufen statischer Methoden mit Reflexion
Problem:
Sie besitzen mehrere statische Klassen innerhalb der Namespace mySolution.Macros, die jeweils statische Methoden enthalten wie:
public static class Indent { public static void Run() { // implementation } }
Ihr Ziel besteht darin, diese Methoden mithilfe von Reflektion aufzurufen, auch wenn sie statisch sind.
Lösung:
Um statische Methoden mit Reflektion aufzurufen und gleichzeitig ihre statische Natur beizubehalten, verwenden Sie den folgenden Ansatz :
foreach (var tempClass in macroClasses) { // Note that the first argument is ignored for static methods tempClass.GetMethod("Run").Invoke(null, null); }
Wie in der Dokumentation zu MethodInfo.Invoke erwähnt, ist das erste Argument für statische Methoden redundant, sodass Sie sicher übergeben können null.
Bindungsflags:
Es ist wichtig zu beachten, dass Sie möglicherweise Bindungsflags angeben müssen, wenn Sie die Methode aufrufen, wie im Kommentar vorgeschlagen:
tempClass.GetMethod("Run", BindingFlags.Public | BindingFlags.Static).Invoke(null, null);
Dadurch wird sichergestellt, dass die Methode öffentlich und statisch ist, was für einen ordnungsgemäßen Aufruf erforderlich ist.
Das obige ist der detaillierte Inhalt vonWie rufe ich statische Methoden mithilfe von Reflection in C# auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!