In Ihrem Szenario möchten Sie eine Sammlung von Schnittstellen in einem bestimmten Namespace durchlaufen und Rufen Sie für jede Schnittstelle dynamisch eine generische Methode auf. Aufgrund der unbekannten Typargumente zur Kompilierungszeit treten jedoch Fehler bei der Kompilierung auf.
Um generische Methoden mit zur Laufzeit bekannten Typargumenten dynamisch aufzurufen, können Sie Reflektion wie folgt verwenden:
using System; using System.Linq; using System.Reflection; public class TestClass { public static void CallGeneric<T>() { Console.WriteLine($"Generic type: {typeof(T)}"); } public static void Main() { var assembly = Assembly.GetExecutingAssembly(); var interfaces = assembly.GetTypes() .Where(t => t.Namespace == "MyNamespace.Interfaces"); var genericMethod = typeof(TestClass).GetMethod("CallGeneric"); foreach (var interfaceType in interfaces) { var genericMethodInstance = genericMethod.MakeGenericMethod(interfaceType); genericMethodInstance.Invoke(null, null); // No target or arguments needed } } }
In diesem Beispiel:
Das obige ist der detaillierte Inhalt vonWie kann ich generische Methoden mit laufzeitbestimmten Typargumenten in C# dynamisch aufrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!