使用反射访问抽象类的属性

时间:2011-08-25 13:40:18

标签: c# reflection

我有一个抽象类 - 让它命名为Base。该类包含一些属性。此外,我还有另一个继承自课程Base的课程 - 我们将其命名为ChildChild不是抽象的。

我想要使用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的所有属性?

2 个答案:

答案 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一起使用应该可以解决问题。