如何在.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。
答案 0 :(得分:3)
要获取继承的常量,您必须对绑定标志更具体一些:
c.GetType().GetField("ParentField", BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy)