Aufrufen statischer Methoden mit Reflection
Reflection bietet einen leistungsstarken Mechanismus für den Zugriff auf und die Bearbeitung von .NET-Typen und ihren Mitgliedern zur Laufzeit. Eine solche Aufgabe ist das Aufrufen statischer Methoden einer Klasse. Dieser Artikel befasst sich mit der spezifischen Notwendigkeit, statische Methoden in einem bestimmten Namespace (mySolution.Macros) mithilfe von Reflektion aufzurufen.
Hintergrund
Im bereitgestellten Codeausschnitt ist das Ziel um eine Liste statischer Klassen in einem bestimmten Namespace zu durchlaufen und deren Run-Methoden aufzurufen. Da die Methoden jedoch statisch sind, ist der Standardansatz, eine Instanz zu erstellen und dann die Methode aufzurufen, nicht anwendbar.
Lösung
Der Schlüssel zum Aufruf statischer Methoden mit Reflexion besteht darin, zu verstehen, dass das erste an MethodInfo.Invoke übergebene Argument für statische Methoden ignoriert wird. Daher ruft der geänderte Code unten erfolgreich die statischen Methoden auf:
foreach (var tempClass in macroClasses) { // using reflection I will be able to run the method as: tempClass.GetMethod("Run").Invoke(null, null); }
Wie in einem Kommentar erwähnt, empfiehlt es sich, sicherzustellen, dass die Methode tatsächlich statisch ist, bevor GetMethod aufgerufen wird:
tempClass.GetMethod("Run", BindingFlags.Public | BindingFlags.Static).Invoke(null, null);
Das obige ist der detaillierte Inhalt vonWie kann ich statische Methoden in einem bestimmten Namespace mithilfe von Reflection in C# aufrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!