GetField const在类型的基类中

时间:2014-02-17 20:27:27

标签: c# reflection

如何在.NET 4中使用反射从派生类中获取基类的字段信息?

例如,

class Parent
{
    public const bool ParentField = true;
}

class Child : Parent
{
    public const bool ChildField = true;
}

使用这些课程:

Console.WriteLine(p.GetType().GetField("ParentField"));
Console.WriteLine(c.GetType().GetField("ChildField"));
Console.WriteLine(c.GetType().GetField("ParentField"));

第三行不符合我的预期。从基类型获取字段时,GetField返回null。我已尝试使用我能想到的所有不同GetField值的BindingsFlags重载,但它总是返回null。

修改

我应该清楚这个

c.GetType().GetField("ParentField",BindingFlags.FlattenHierarchy)

也会返回null。

1 个答案:

答案 0 :(得分:3)

要获取继承的常量,您必须对绑定标志更具体一些:

c.GetType().GetField("ParentField", BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy)