【问题标题】:How to GetType of List<String> in C#? [duplicate]如何在 C# 中获取 List<String> 的类型? [复制]
【发布时间】:2011-03-18 06:51:57
【问题描述】:

如何在 C# 中使用 Type.GetType() 获取 "List&lt;String&gt;" 的类型?

我已经试过了:

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

请注意,我不能使用typeof,因为我得到的类型是字符串。

【问题讨论】:

  • 请注意,要在文本段落中显示尖括号,您必须使用反引号将格式设置为代码(正如我刚刚编辑的那样)。

标签: c#


【解决方案1】:

你可以使用typeof操作符。

typeof(List<String>)

看到这个问题:C# How can I get Type from a string representation

【讨论】:

  • typeif 不将字符串作为参数。我有 String s = "List"
【解决方案2】:
System.Type type = typeof(List<String>);

【讨论】:

  • 除非您想获取 System.Web.UI.MobileControls.List 的类型,否则这将不起作用。你是说 typeof(List) 吗?
【解决方案3】:
typeof(List<string>)

【讨论】:

    【解决方案4】:

    你不能从"List&lt;String&gt;"得到它,但你可以从Type.GetType得到它:

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

    在这种情况下你很幸运 - List&lt;T&gt;string 都在 mscorlib 中,因此我们不必指定程序集。

    `1 部分指定类型的arity:它有一个类型参数。方括号中的位指定类型参数。

    你从哪里得到List&lt;String&gt;?你能改变你的要求吗?这将比解析字符串、找出类型参数的位置、在不同的命名空间和程序集中查找类型等更容易。如果您在有限的上下文中工作(例如,您只需要支持一组已知的类型)对一些细节进行硬编码可能是最容易的。

    【讨论】:

    • @Downvoter:解释一下你不喜欢什么?
    • Giorgi 比你早 4 分钟给出了同样的答案。
    • @onof:不,他没有。他给出了一个答案,只显示了typeof,然后当 OP 解释说他需要从字符串中获取类型时,他对其进行了编辑。我正在写我的答案,而 Giorgi 正在编辑他的答案。您看不到编辑,因为它在前 5 分钟内,但它显然在那里,否则 OP 的评论没有意义。
    猜你喜欢
    • 1970-01-01
    • 2023-01-10
    • 2021-09-18
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-19
    • 1970-01-01
    相关资源
    最近更新 更多