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

时间:2013-10-16 17:36:32

标签: c# reflection custom-attributes backing-field

我有一个简单的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的{​​{1}}吗?

1 个答案:

答案 0 :(得分:6)

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

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