对继承的静态属性的反思

发布于 2025-01-07 04:03:39 字数 495 浏览 0 评论 0原文

我在 .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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

尐籹人 2025-01-14 04:03:39

您可以指定 BindingFlags.FlattenHierarchy 来获取基类中声明的静态属性:

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

You can specify BindingFlags.FlattenHierarchy to get static properties declared in a base class:

var props = typeof(Bar).GetProperties(BindingFlags.Public |
                                      BindingFlags.Static | 
                                      BindingFlags.FlattenHierarchy);
‘画卷フ 2025-01-14 04:03:39
var prop = typeof (Bar).GetProperties(BindingFlags.FlattenHierarchy | BindingFlags.Public | BindingFlags.Static);

如果您需要私有属性,您还需要添加 BindingFlags.NonPublic 。请参阅 BindingFlags 枚举

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

If you need private properties you need to add BindingFlags.NonPublic as well. See BindingFlags Enumeration

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文