对继承的静态属性的反思
我在 .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()
。
感谢您的帮助!
戈德温
I'm having some trouble getting a static property through reflection in .NET 4.0.
Say for example I have the following classes:
class Foo
{
public static int MyProperty
{
get { return 1234; }
}
}
class Bar : Foo
{
}
Now if I call:
typeof(Foo).GetProperties();
I get the expected list of one property, "MyProperty". If instead I call:
typeof(Bar).GetProperties();
I get nothing. Unfortunately I'm dealing strictly with values stored as Type
data types, so I can't directly call typeof(Foo).GetProperties()
.
Thanks for any help!
godwin
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以指定
BindingFlags.FlattenHierarchy
来获取基类中声明的静态属性:You can specify
BindingFlags.FlattenHierarchy
to get static properties declared in a base class:如果您需要私有属性,您还需要添加
BindingFlags.NonPublic
。请参阅 BindingFlags 枚举If you need private properties you need to add
BindingFlags.NonPublic
as well. See BindingFlags Enumeration