确定FieldInfo是否是编译器生成的后台

时间:2010-04-14 15:52:13

标签: c# reflection

标题几乎说明了一切,我怎么知道我是否为{get;设置;}属性?

我正在运行此代码以获取我的FieldInfos:

Class MyType
{
    private int foo;
    public int bar {get; private set; }
}

Type type = TypeOf(MyType);
foreach (FieldInfo fi in type.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly | BindingFlags.NonPublic))
{
    // Gets both foo and bar, however bar is called <bar>k__backingfield.
}

所以问题是,我可以以某种方式检测到FieldInfo是一个支持域,而不依赖于检查其名称吗? (这是非常无证的,可以在下一版本的框架中破解)

1 个答案:

答案 0 :(得分:9)

检查.IsDefined(typeof(CompilerGeneratedAttribute), false);