2012-02-19 30 views
1

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

您可以指定BindingFlags.FlattenHierarchy获得在基类中声明静态属性:

var props = typeof(Bar).GetProperties(BindingFlags.Public | 
             BindingFlags.Static | 
             BindingFlags.FlattenHierarchy); 
+0

就是这样!谢谢! – Godwin 2012-02-19 04:57:21

0
var prop = typeof (Bar).GetProperties(BindingFlags.FlattenHierarchy | BindingFlags.Public | BindingFlags.Static); 

如果你需要私有财产,你需要添加BindingFlags.NonPublic为好。见BindingFlags Enumeration