您想要调用泛型方法直到运行时才知道的类型参数。例如,您有一个接口列表,并且您想为每个接口调用一个泛型方法。
因为编译时不知道类型参数有时,您不能将传统方法调用与泛型一起使用。相反,您需要使用反射根据运行时获取的类型参数动态调用泛型方法。
以下是实现此方法的方法:
// Original Method public void Method<T>() { // Method body } // Main Method var assembly = Assembly.GetExecutingAssembly(); var interfaces = assembly.GetTypes().Where(t => t.Namespace == "MyNamespace.Interfaces"); foreach (var interfaceType in interfaces) { MethodInfo genericMethod = typeof(Test).GetMethod("Method"); MethodInfo specificMethod = genericMethod.MakeGenericMethod(interfaceType); specificMethod.Invoke(null, null); // No arguments for this example }
通过利用反射,此方法允许您在运行时动态调用具有未知类型参数的泛型方法。
以上是如何使用运行时确定的类型参数调用泛型方法?的详细内容。更多信息请关注PHP中文网其他相关文章!