在运行时提取类型

Jay*_*man 0 .net c# reflection

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

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

Type typ = Type.GetType("MyApp.Modules.Common.contact")
Run Code Online (Sandbox Code Playgroud)

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

Jon*_*eet 5

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

如果你不知道,你应该看看在什么装配信息,但你相信,大会已经被加载,你可能会使用AppDomain.GetAssemblies()找到组件,然后通过各那些又将看,调用Assembly.GetType,直到找到一个匹配.

我会鼓励你看看那里怎么类型的信息被传递,虽然周围的设计-理想确保大会的信息可用的.