在您的场景中,您想要迭代特定命名空间中的接口集合,并且动态地调用每个接口的通用方法。但是,由于编译时的类型参数未知,您会遇到编译时错误。
要动态调用具有运行时已知类型参数的泛型方法,可以使用反射,如下所示:
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中文网其他相关文章!