Heim >Backend-Entwicklung >C++ >Wie rufe ich statische Methoden mithilfe von Reflection in C# auf?

Wie rufe ich statische Methoden mithilfe von Reflection in C# auf?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-28 18:45:13879Durchsuche

How to Invoke Static Methods Using Reflection in C#?

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!

Stellungnahme:
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