在运行时提取类型

时间:2015-07-01 06:58:42

标签: c# .net reflection

我有一个Type名称作为输入传递。     “MyApp.Modules.Common.contact”。

使用Activator.CreateInstance如何在我正在使用的方法中构造此类型。 如果我这样做

Type typ = Type.GetType("MyApp.Modules.Common.contact")

typ始终为null。我该如何解决。请帮忙。

1 个答案:

答案 0 :(得分:5)

如果您只提供类型名称,Type.GetType将查看当前正在执行的程序集,mscorlib - 但这就是全部。如果需要访问不同程序集中的类型,则需要在类型中获取程序集名称,例如: "MyApp.Modules.Common.contact, MyApp.Modules.Common"(如果程序集名称为"MyApp.Modules.Common" - 或者如果您有Assembly引用,则可以使用Assembly.GetType(string)

如果您没有关于应该查看哪个程序集的信息,但是您确信已加载程序集 ,则可以使用AppDomain.GetAssemblies()来查找程序集,然后依次查看每个,调用Assembly.GetType直到找到匹配项。

我建议您查看类型信息传递方式的设计 - 最好确保 的程序集信息可用。

相关问题