C# 关于继承静态属性的思考
在.NET4.0中,通过反射获取静态属性时遇到一些问题 例如,假设我有以下课程:C# 关于继承静态属性的思考,c#,.net,c#-4.0,reflection,properties,C#,.net,C# 4.0,Reflection,Properties,在.NET4.0中,通过反射获取静态属性时遇到一些问题 例如,假设我有以下课程: class Foo { public static int MyProperty { get { return 1234; } } } class Bar : Foo { } 现在如果我打电话: typeof(Foo).GetProperties(); 我得到了一个属性“MyProperty”的预期列表。如果我打电话: typeof(Bar).GetPropertie
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.FlatterHierarchy
以获取基类中声明的静态属性:
var props = typeof(Bar).GetProperties(BindingFlags.Public |
BindingFlags.Static |
BindingFlags.FlattenHierarchy);
如果需要私有属性,则需要添加BindingFlags.NonPublic
。看
var prop = typeof (Bar).GetProperties(BindingFlags.FlattenHierarchy | BindingFlags.Public | BindingFlags.Static);