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

标签 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; 的属性。设置;

这是为什么呢?我希望同时获得 i 和它的(私有(private))支持字段,因为 i 是公开的。

我能以某种方式通过反射到达iMyAtrib吗?

最佳答案

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

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

关于c# - 当存在支持字段时,如何通过反射获取类字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19410084/

相关文章:

没有 FQN 的 C# 反射加载 "System"程序集

.net - 如何从类属性中访问 web.config 值?

c# - 在特定日期后过时?

c# - 无法获取未定义或空引用的属性 'hide'

c# - 位图的 OutOfMemoryException 错误

c# - 公开 WPF 用户控件的属性

java - 获取方法输出参数参数

c# - 动态模块什么时候可以有类型加载异常?

c# - C# 中的属性是否使用反射?

c# - ASP.NET Core 和 JWT token 生命周期