在您的場景中,您想要迭代特定命名空間中的介面集合,並且動態地呼叫每個介面的通用方法。但是,由於編譯時的類型參數未知,您會遇到編譯時錯誤。
要動態呼叫具有運行時已知型別參數的泛型方法,可以使用反射,如下所示:
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 } } }
在此範例:
以上是如何在 C# 中使用運行時確定的類型參數動態呼叫泛型方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!