在运行时提取类型
我有一个类型名称作为输入传递。 “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
直到找到匹配项。
我鼓励您查看类型信息传递方式的设计 – 理想情况下确保程序集信息可用。