我有一个抽象类-让它命名为Base
。这个类包含一些属性。此外,我还有另一个类,继承自类Base
——我们把它命名为Child
。Child
不抽象。
我想用反射访问Base
类的属性,并且只能在Base
中声明的属性。
Base base = new Base();
Type type = base.GetType();
PropertyInfo[] propInfos =
type.GetProperties(
BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly
);
下面的代码是可能的,但是我得到了所有的属性,那些在Base
中定义的以及那些在Child
中定义的。
Child child = new Child();
Type type = child.GetType();
PropertyInfo[] propInfos =
type.GetProperties(BindingFlags.Instance | BindingFlags.Public);
如何通过反射获得类Base
的所有属性?
试试这个:
Type type = typeof(A);
PropertyInfo[] propInfos
= type.GetProperties(BindingFlags.Instance
| BindingFlags.Public
| BindingFlags.DeclaredOnly);
在对象上调用GetType()
只是获取Type
对象的方法之一。另一个甚至适用于abstract
类的是typeof()
。使用BindingFlags.DeclaredOnly
选项和typeof(A).GetProperties
应该可以达到这个效果。