Reflection返回只读属性的后备字段?

时间:2016-11-26 15:50:35

标签: c# .net c#-6.0 .net-4.6 .net-4.6.2

如果像这样调用,它看起来像Reflection返回属性的支持字段:

type.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)

有没有办法返回用户在类中声明的所有字段,而没有任何支持字段/编译器生成的字段/等。

编辑:依赖[CompilerGenerated]属性是否安全?

1 个答案:

答案 0 :(得分:1)

所有这些字段都标有CompilerGeneratedAttribute,因此您可以像这样过滤:

var fields = type.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
            .Where(f => f.GetCustomAttribute<CompilerGeneratedAttribute>() == null).ToArray();