通过反射访问抽象类的属性

Em1*_*Em1 5 c# reflection

我有一个抽象类 \xe2\x80\x94 让我们将其命名为Base。该类包含一些属性。此外,我还有另一个类,继承自类Base\xe2\x80\x94 让我们将其命名为ChildChild并不抽象。

\n\n

我想使用反射访问类中的属性Base,并且访问Base.

\n\n

下面的代码当然是不可能的,因为我无法创建抽象类的实例

\n\n
Base base = new Base();\nType type = base.GetType();\nPropertyInfo[] propInfos =\n    type.GetProperties(\n        BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly\n    );\n
Run Code Online (Sandbox Code Playgroud)\n\n

下面的代码是可能的,但我得到了所有属性,那些定义在Base以及那些定义在Child.

\n\n
Child child = new Child();\nType type = child.GetType();\nPropertyInfo[] propInfos =\n    type.GetProperties(BindingFlags.Instance | BindingFlags.Public);\n
Run Code Online (Sandbox Code Playgroud)\n\n

如何通过反射获取类的所有属性Base

\n

And*_*are 5

尝试这个:

Type type = typeof(A);

PropertyInfo[] propInfos 
    = type.GetProperties(BindingFlags.Instance 
        | BindingFlags.Public 
        | BindingFlags.DeclaredOnly);
Run Code Online (Sandbox Code Playgroud)


Aak*_*shM 4

调用GetType()对象只是获取对象的方法之一Type。另一个甚至适用于abstract类的方法是typeof(). 使用BindingFlags.DeclaredOnly选项 withtypeof(A).GetProperties应该可以解决问题。