C# 在运行时提取类型

C# 在运行时提取类型,c#,.net,reflection,C#,.net,Reflection,我有一个类型名作为输入传递。 “MyApp.Modules.Common.contact” 使用Activator.CreateInstance如何在我使用的方法中构造此类型。 如果我这样做 Type typ = Type.GetType("MyApp.Modules.Common.contact") 该类型始终为空。我该如何解决这个问题。请提供帮助。如果您只提供类型名称,type.GetType将查找当前正在执行的程序集,mscorlib——但仅此而已。如果需要访问不同程序集中的类型,则还需

我有一个类型名作为输入传递。 “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.GetType
,直到找到匹配项


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

在何处声明此类型?可能在您需要使用此类型加载程序集之前。还要检查类型名称是否存在键入错误或类似错误“如果调用GetType时程序集尚未保存到磁盘,则该方法返回null。”,的备注中还有许多其他原因,这些原因是否适用?是否在同一程序集中?如果不尝试:
Type typ=Type.GetType(“MyApp.Modules.Common.contact,”+assemblyName)
当我键入.GetType(“MyApp.Modules.Common.contact”)时它返回一个system.runtimetypeonly@Jayaraman:你的意思是
Type.GetType
?现在还不清楚你的意思。