如果类名为字符串,我可以获得类属性吗?我的实体在类库项目中,我尝试了不同的方法来获取类型和程序集,但无法获取类实例。
var obj = (object)"User";
var type = obj.GetType();
System.Activator.CreateInstance(type);
object oform;
var clsName = System.Reflection.Assembly.GetExecutingAssembly().CreateInstance("[namespace].[formname]");
Type type = Type.GetType("BOEntities.User");
Object user = Activator.CreateInstance(type);
什么都不起作用
我怀疑你在寻找:
Type type = Type.GetType("User");
Object user = Activator.CreateInstance(type);
注:
- 这将仅在
mscorlib
和当前执行的程序集中查找,除非您还在名称中指定程序集 - 它需要是命名空间限定的名称,例如
MyProject.User
EDIT:要访问不同程序集中的类型,可以使用程序集限定的类型名称,也可以仅使用Assembly.GetType
,例如
Assembly libraryAssembly = typeof(SomeKnownTypeInLibrary).Assembly;
Type type = libraryAssembly.GetType("LibraryNamespace.User");
Object user = Activator.CreateInstance(type);
(请注意,我还没有谈到获取属性的问题,因为您的问题中没有其他内容谈到这一点。但Type.GetProperties
应该可以正常工作。)
如果类名为字符串,我可以获取类属性吗?
当然:
var type = obj.GetType();
PropertyInfo[] properties = type.GetProperties();
这将获得一个公共实例属性列表。如果你需要访问私人或静态属性,你可能需要指出:
var type = obj.GetType();
PropertyInfo[] properties = type.GetProperties(BindingFlags.NonPublic);
尝试
Type type = Type.GetType("Assembly with namespace");