当存在支持字段时,如何通过反射获取类字段

本文关键字:字段 反射 何通过 获取 存在 支持 | 更新日期: 2023-09-27 18:35:35

我有一个简单的POCO类,例如

class C {
  [MyAtrib]
  public int i {get; set;}
  [MyAtrib]  
  public int i2;
}

当我打电话时:

GetType().GetFields(
  BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);

在该类(实例)上,我无法获取那些自动生成 getter/setter 的成员FieldInfo(即 int i上文)。

实际上,我正在尝试读取这些自定义属性(MyAtrib),但无法为那些具有{get; set;}的属性执行此操作。

为什么?我希望得到i和它的(私人)支持领域,因为i是公共的。

我可以通过反思以某种方式了解i MyAtrib吗?

当存在支持字段时,如何通过反射获取类字段

您现在会得到字段,但public int i {get; set;}是一个属性。您需要获取属性:

// note: properties -> generally public
GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public);