【发布时间】:2010-11-27 12:53:25
【问题描述】:
Dim a as Type=GetType(className) 将给我类型。但我只有类的名称作为字符串。我想要像 GetType("class1") 这样可以返回类型的东西。
【问题讨论】:
标签: c# vb.net reflection dynamic
Dim a as Type=GetType(className) 将给我类型。但我只有类的名称作为字符串。我想要像 GetType("class1") 这样可以返回类型的东西。
【问题讨论】:
标签: c# vb.net reflection dynamic
Type.GetType("class1")
【讨论】:
Type.GetType(...) 和 Assembly.GetType(...) 都需要一个完全限定的类型名称。因此,只传入类名而不传入其命名空间不会产生类型。
如果您确保包含这样的命名空间:
Type.GetType("Fully.Qualified.Namespace.class1")
将产生与 GetType(class1) 相同的结果。
更新:如果你不知道你的类的命名空间,你可以对当前程序集中的类型进行搜索(注意使用 Linq):
GetType().Assembly.GetTypes().First(type => type.Name == "AssemblyModuleTests")
我认为这比使用完全限定名称查找类型要慢,因为 GetTypes() 会枚举程序集中的所有类型。
【讨论】: