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



我有一个抽象类-让它命名为Base。这个类包含一些属性。此外,我还有另一个类,继承自类Base——我们把它命名为ChildChild不抽象。

我想用反射访问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应该可以达到这个效果。

相关内容

  • 没有找到相关文章

最新更新