如何从字符串中获取类型?

时间:2014-10-06 11:13:28

标签: c# .net reflection types casting

为什么var type = Type.GetType("System.Windows.Forms.TextBox");会返回null

我正在尝试从TextBox获取string类型的类型。

2 个答案:

答案 0 :(得分:7)

您也应该包含完整的程序集名称:

var type = Type.GetType("System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");

请注意MSDN上的文档(强调我的):

  

要获取的类型的程序集限定名称。 ...如果类型位于当前正在执行的程序集或Mscorlib.dll 中,则提供由其名称空间限定的类型名称就足够了。

因此,只能使用类型名称解析mscorlib和Assembly.GetExecutingAssembly(),否则您也需要完整的程序集名称。

答案 1 :(得分:4)

您还应该包括程序集名称和公共令牌等:

var type = Type.GetType("System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");