Type.GetType失败但property.PropertyType工作正常

时间:2009-10-09 14:30:32

标签: c#

我正在迭代对象并初始化该对象的所有属性。首先,对象的类型,即类放在我的同一个项目中,它工作正常。现在,我将类移动到另一个项目中,但仍使用AssemblyName.Namespace.Class创建相同的对象,但它已停止工作。

这是我以前的代码:

var o = Activator.CreateInstance(Type.GetType(property.PropertyType.Name)); 

以上总是返回null。所以,我尝试了以下内容:

var o = Activator.CreateInstance(property.PropertyType); 

它工作并创建了正确的对象。我很好奇为什么会发生这种情况!

1 个答案:

答案 0 :(得分:4)

Type.GetType(string)需要该类型的完整名称,包括程序集信息,除非该类型与调用者或mscorlib位于同一程序集中。此外,您还需要确保您已获得命名空间。因此Type.FullName应该在同一个程序集或mscorlib中工作,Type.AssemblyQualifiedName应始终有效。

但是,嘿,如果你已经从Type属性中获得PropertyType类型,那么无论如何都无需调用Type.GetType。)