我有一个抽象类 \xe2\x80\x94 让我们将其命名为Base。该类包含一些属性。此外,我还有另一个类,继承自类Base\xe2\x80\x94 让我们将其命名为Child。Child并不抽象。
我想使用反射访问类中的属性Base,并且仅访问Base.
下面的代码当然是不可能的,因为我无法创建抽象类的实例
\n\nBase base = new Base();\nType type = base.GetType();\nPropertyInfo[] propInfos =\n type.GetProperties(\n BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly\n );\nRun Code Online (Sandbox Code Playgroud)\n\n下面的代码是可能的,但我得到了所有属性,那些定义在Base以及那些定义在Child.
Child child = new Child();\nType type = child.GetType();\nPropertyInfo[] propInfos =\n type.GetProperties(BindingFlags.Instance | BindingFlags.Public);\nRun Code Online (Sandbox Code Playgroud)\n\n如何通过反射获取类的所有属性Base?
尝试这个:
Type type = typeof(A);
PropertyInfo[] propInfos
= type.GetProperties(BindingFlags.Instance
| BindingFlags.Public
| BindingFlags.DeclaredOnly);
Run Code Online (Sandbox Code Playgroud)
调用GetType()对象只是获取对象的方法之一Type。另一个甚至适用于abstract类的方法是typeof(). 使用BindingFlags.DeclaredOnly选项 withtypeof(A).GetProperties应该可以解决问题。
| 归档时间: |
|
| 查看次数: |
9027 次 |
| 最近记录: |