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:
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); }
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!