如何在C#中获取List<String>的类型?

7

如何使用 Type.GetType() 在C#中获取 "List<String>" 的类型?

我已经尝试过:

 Type.GetType("List<String>");
 Type.GetType("System.Collections.Generic.List.String"); // Or [String]

请注意,由于我要获取的值是字符串,所以我不能使用typeof

请查看以下问题:https://dev59.com/eXRB5IYBdhLWcg3wpoxm - Peanut
请注意,为了在文本段落中显示尖括号,您必须使用反引号进行代码格式化(就像我刚刚编辑的那样)。 - AakashM
4个回答

20

你无法从"List<String>"中获取,但是你可以通过Type.GetType来获取:

Type type = Type.GetType("System.Collections.Generic.List`1[System.String]");

在这种情况下,你很幸运 - List<T>string都在mscorlib中,所以我们不需要指定程序集。

`1部分指定了类型的元数:它有一个类型参数。方括号中的内容指定了类型参数。

你从哪里获取了只有List<String>的信息?你能更改一下你的要求吗?这样做会比解析字符串、确定类型参数在哪里、在不同的命名空间和程序集中查找类型等更容易。如果你在一个有限的上下文中工作(例如,你只需要支持已知的一组类型),可能最容易硬编码一些细节。


@Downvoter:能否解释一下你不喜欢什么? - Jon Skeet
Giorgi在你之前4分钟给出了相同的答案。 - onof
@onof:不,他没有。他只是展示了typeof的答案,当OP解释需要从字符串中获取类型时,他进行了编辑。我在Giorgi编辑答案时正在编写我的答案。您看不到编辑,因为它在前5分钟内完成,但显然存在,否则OP的评论就没有意义了。 - Jon Skeet

3

typeif不接受字符串作为参数。我有一个String s = "List<String>"。 - scatman

1
System.Type type = typeof(List<String>);

除非你想要获取System.Web.UI.MobileControls.List类型,否则这无法工作。你是不是想要typeof(List<>)? - Giorgi

0
typeof(List<string>)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接