关于继承静态属性的思考

时间:2012-02-19 04:39:49

标签: c# .net c#-4.0 reflection properties

我在通过.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()

感谢您的帮助! 戈德温

2 个答案:

答案 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