如果在运行时只知道类型参数,如何调用泛型方法?我有这个方法:publicListSomeMethod(params)whereT:new()所以我想调用这个SomeMethod,如果我知道类型:SomeMethod();但是如果我在运行时只有Class1,我不能调用它吗?那么如何调用未知T类型的SomeMethod呢?我得到了带有反射的类型。我有类型Type,但SomeMethodSomeMethod不起作用。7月更新:这是我想要实现的示例代码:usingSystem;使用System.Collections.Generic;使用System.Linq;使用系统文本;使用System.Reflection;namespaceConsoleApplication63{publicclassDummyClass{}publicclassClass1{publicstringName;}classAssemblyTypesReflection{staticvoidMain(string[]args){objectobj=newClass1(){Name="John"};组装组装=组装。获取执行程序集();varAsmClass1=(fromiinassembly.GetTypes()wherei.Name=="Class1"selecti).FirstOrDefault();varlist=SomeMethod((AsmClass1)obj);//这里失败了}staticListSomeMethod(Tobj)whereT:new(){returnnewList{obj};}}}这是一个取自更大上下文的演示。您需要使用反射来调用它:varmethod=typeof(SomeClass).GetMethod("SomeMethod");方法.MakeGenericMethod(someType).Invoke(...);您可以在C#4中使用dynamic关键字。您还需要.NET4.0或更高版本:SomeMethod((dynamic)obj);实际类型参数在运行时推断并调用。如果obj为空则失败,因为那时没有类型信息。C#中的null没有类型。以上是C#学习教程:运行时只知道类型参数如何调用泛型方法?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
