我在.NET 4.0中通过反射获取静态属性时遇到了一些问题。
例如,我有以下类:
class Foo
{
public static int MyProperty
{
get { return 1234; }
}
}
class Bar : Foo
{
}
现在如果我打电话:
typeof(Foo).GetProperties();
我得到了一个属性"MyProperty"的预期列表。如果我打电话给:
typeof(Bar).GetProperties();
我一无所获。不幸的是,我严格处理以Type
数据类型存储的值,所以我不能直接调用typeof(Foo).GetProperties()
。
谢谢你的帮助
godwin
您可以指定BindingFlags.FlattenHierarchy
来获取在基类中声明的静态属性:
var props = typeof(Bar).GetProperties(BindingFlags.Public |
BindingFlags.Static |
BindingFlags.FlattenHierarchy);
var prop = typeof (Bar).GetProperties(BindingFlags.FlattenHierarchy | BindingFlags.Public | BindingFlags.Static);
如果您需要私有属性,还需要添加BindingFlags.NonPublic
。请参阅BindingFlags枚举