我有一个抽象类 - 让它命名为Base
。该类包含一些属性。此外,我还有另一个继承自课程Base
的课程 - 我们将其命名为Child
。 Child
不是抽象的。
我想要使用Reflection访问类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);
如何通过Reflection获取类Base
的所有属性?
答案 0 :(得分:3)
试试这个:
Type type = typeof(A);
PropertyInfo[] propInfos
= type.GetProperties(BindingFlags.Instance
| BindingFlags.Public
| BindingFlags.DeclaredOnly);
答案 1 :(得分:2)
在对象上调用GetType()
只是获取Type
对象的方法之一。另一个甚至适用于abstract
类的是typeof()
。将BindingFlags.DeclaredOnly
选项与typeof(A).GetProperties
一起使用应该可以解决问题。