我在通过.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()
。
感谢您的帮助! 戈德温
答案 0 :(得分:2)
您可以指定BindingFlags.FlattenHierarchy
以获取在基类中声明的静态属性:
var props = typeof(Bar).GetProperties(BindingFlags.Public |
BindingFlags.Static |
BindingFlags.FlattenHierarchy);
答案 1 :(得分:0)
var prop = typeof (Bar).GetProperties(BindingFlags.FlattenHierarchy | BindingFlags.Public | BindingFlags.Static);
如果您需要私人媒体资源,则还需要添加BindingFlags.NonPublic
。见BindingFlags Enumeration