Heim > Backend-Entwicklung > C++ > Wie kann ich statische Methoden in einem bestimmten Namespace mithilfe von Reflection in C# aufrufen?

Wie kann ich statische Methoden in einem bestimmten Namespace mithilfe von Reflection in C# aufrufen?

Patricia Arquette
Freigeben: 2024-12-29 22:17:27
Original
428 Leute haben es durchsucht

How Can I Invoke Static Methods in a Specific Namespace Using Reflection in C#?

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);
}
Nach dem Login kopieren

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);
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage