我正在迭代对象并初始化该对象的所有属性。首先,对象的类型,即类放在我的同一个项目中,它工作正常。现在,我将类移动到另一个项目中,但仍使用AssemblyName.Namespace.Class创建相同的对象,但它已停止工作。
这是我以前的代码:
var o = Activator.CreateInstance(Type.GetType(property.PropertyType.Name));
以上总是返回null。所以,我尝试了以下内容:
var o = Activator.CreateInstance(property.PropertyType);
它工作并创建了正确的对象。我很好奇为什么会发生这种情况!
答案 0 :(得分:4)
Type.GetType(string)
需要该类型的完整名称,包括程序集信息,除非该类型与调用者或mscorlib位于同一程序集中。此外,您还需要确保您已获得命名空间。因此Type.FullName
应该在同一个程序集或mscorlib中工作,Type.AssemblyQualifiedName
应始终有效。
但是,嘿,如果你已经从Type
属性中获得PropertyType
类型,那么无论如何都无需调用Type.GetType
。)