我有一个类型名称作为输入传递。"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
直到找到匹配的程序集。
不过,我鼓励您研究如何传递类型信息的设计——理想情况下,请确保程序集信息可用。