Heim > Backend-Entwicklung > C++ > Wie rufe ich mithilfe von Reflection generische Methoden mit dynamischen Typargumenten in C# auf?

Wie rufe ich mithilfe von Reflection generische Methoden mit dynamischen Typargumenten in C# auf?

Barbara Streisand
Freigeben: 2025-01-03 14:19:40
Original
685 Leute haben es durchsucht

How to Invoke Generic Methods with Dynamic Type Arguments in C# using Reflection?

Aufrufen generischer Methoden mit dynamischen Typargumenten

In C# erfordert das Aufrufen generischer Methoden mit Typargumenten, die erst zur Ausführungszeit bekannt sind, die Nutzung von Reflexionsfunktionen. Die ursprüngliche Herausforderung bestand darin, Schnittstellen in einem bestimmten Namespace zu durchlaufen und eine generische Methode aufzurufen, die diese Schnittstellen als Argumente verwendet.

Um dieses Problem zu lösen, führen Sie die folgenden Schritte aus:

  1. Suchen Sie die Generische Methode:Verwenden Sie Type.GetMethod, um die generischen Methodeninformationen abzurufen.
  2. Erstellen Sie die Methode Generisch: Verwenden Sie MakeGenericMethod, um eine spezielle Version der generischen Methode für den gewünschten Typ zu erstellen.
  3. Methode aufrufen: Rufen Sie Invoke für die generierte Methode auf, um sie auszuführen.

Betrachten Sie zum Beispiel den folgenden Code:

// Get the generic method
MethodInfo method = typeof(Test).GetMethod("CallMe");

// Get the list of interfaces in the specified namespace
var types = typeof(Test).Assembly
    .GetTypes()
    .Where(t => t.Namespace == "Interfaces");

// Loop through the interfaces
foreach (Type type in types)
{
    // Create a specialized generic method
    MethodInfo genericMethod = method.MakeGenericMethod(type);

    // Invoke the method with no target or arguments
    genericMethod.Invoke(null, null);
}
Nach dem Login kopieren

In diesem Beispiel rufen wir ab Erstellen Sie mit der generischen Methode „CallMe“ spezielle Versionen für jeden Schnittstellentyp und rufen Sie sie nachdenklich auf.

Hinweis: Wenn der Schnittstellentyp, mit dem Sie es zu tun haben, selbst generisch ist, verwenden Sie MakeGenericType anstelle von MakeGenericMethod und übergeben Sie die geeignete Typargumente.

Das obige ist der detaillierte Inhalt vonWie rufe ich mithilfe von Reflection generische Methoden mit dynamischen Typargumenten in C# auf?. 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