在运行时提取类型



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

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

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

typ始终为null。我该如何解决这个问题。请帮忙。

如果只提供类型名称,Type.GetType将查找当前执行的程序集和mscorlib,但仅此而已。如果您需要访问不同程序集中的类型,那么您也需要获取该类型中的程序集名称,例如"MyApp.Modules.Common.contact, MyApp.Modules.Common"(如果程序集名称是"MyApp.Modules.Common"-或者如果您有Assembly引用,则可以使用Assembly.GetType(string).

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

不过,我鼓励您研究如何传递类型信息的设计——理想情况下,请确保程序集信息可用。

相关内容

  • 没有找到相关文章