Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 拥有类名的字符串表示形式如何将其传递给泛型_C#_Generics - Fatal编程技术网

C# 拥有类名的字符串表示形式如何将其传递给泛型

C# 拥有类名的字符串表示形式如何将其传递给泛型,c#,generics,C#,Generics,我需要使用原型调用一个函数: SomeFunc<T>() 我将其称为SomeFunc()。但是,我只将Person表示为字符串,例如: var classString = "Person"; 那么如何转换classString以便将其传递给T?您可以得到如下类型 var classString = "Person"; Type typeValue = Type.GetType(classString ); var type = type.AssemblyQualifiedName

我需要使用原型调用一个函数:

SomeFunc<T>()
我将其称为
SomeFunc()
。但是,我只将Person表示为字符串,例如:

var classString = "Person";

那么如何转换
classString
以便将其传递给T?

您可以得到如下类型

var classString = "Person";
Type typeValue = Type.GetType(classString );
var type = type.AssemblyQualifiedName;
然后像这样调用函数


我还没试过,但它应该会起作用

参见安德鲁和乔恩关于这个问题的答案


有人可能应该将其标记为重复。

Type.GetType()
(或
Assembly.GetType()
)和
MethodInfo.CreateGenericMethod
组合在一起。我的问题是:您能否重写代码以使用真正的类类型而不是字符串?奇怪的是,您想要调用一个需要泛型的方法(在编译时确定)在运行时确定参数。你确定泛型就是你要找的吗?@himbrombeere这个问题假设我们有一个
类型
对象,我们这里没有。而且,OP可能不应该做他们认为他们想做的事情do@AakashM虽然我同意,但我认为我们不应该重新讨论这个问题,因为它也应该如此无论如何都很广泛-我们只是不知道OP想要这个的确切原因。如果我们知道,我们可以重新打开。
GetType
将需要一个完整的程序集限定名,用于另一个程序集中您自己的类型。只需传递
“Person”
因此不起作用。除此之外,您的答案只是实际解决方案的一小部分,将所有与泛型方法相关的内容都保留为asside。@HimBromBeere这不是真的吗?@HimBromBeere如果您要查找的类型是同一程序集的内部类型,则您不需要这些铃铛和哨子。否则,您需要。我们实际上不知道OP试图从“有人可能应该将此标记为重复”中分配类型。为什么你回答这个问题而不是投票关闭它?我在发布之前确实搜索过,但不知何故,该帖子没有出现。因此我感谢立即的否决票(不是).该链接包含了我需要的所有信息,非常感谢@Michael@HimBromBeere投票关闭特权是在3k,所以我只是有点短…我发现在此期间将OP指向正确的方向更有帮助。@在你的问题上,我看不到任何反对票。@Himbrombere这是我所指答案中的反对票。
var classString = "Person";
Type typeValue = Type.GetType(classString );
var type = type.AssemblyQualifiedName;