在运行时提取类型

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

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

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

典型值始终为空。 我该如何解决。 请帮忙。

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

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

我鼓励您查看类型信息传递方式的设计 – 理想情况下确保程序集信息可用。