首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#:如何使用CategoryAttribute.Appearance属性

C#:如何使用CategoryAttribute.Appearance属性
EN

Stack Overflow用户
提问于 2009-03-05 14:20:29
回答 3查看 4.9K关注 0票数 4

我读过一些关于组件的设计时间属性的文章。在那里,我找到了一个名为CategoryAttribute的属性。在那一页上写着

CategoryAttribute类定义了以下常见类别:

然后列出一些常见的类别。例如,其中一个是外观。我想,太棒了!然后我可以使用[Category.Appearance]而不是[Category("Appearance")]!但很明显我做不到?试图编写它,但是Intellisense不会捡起它,也不会编译它。我是不是漏掉了什么?难道这些财产不是用来做的吗?如果没有,它们是干什么用的?如果是的话,我该如何使用?

是的,我确实有正确的using来访问CategoryAttribute,因为[Category("Whatever")]确实工作。我只是想知道我是如何使用这些定义的公共类别的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-03-05 14:40:16

正如您在MSDN上所看到的,它只是一个getter属性,而不是setter。

代码语言:javascript
复制
public static CategoryAttribute Appearance { get; }

实际上,下面的代码是如何使用Reflector的:

代码语言:javascript
复制
 public static CategoryAttribute Appearance
    {
        get
        {
            if (appearance == null)
            {
                appearance = new CategoryAttribute("Appearance");
            }
            return appearance;
        }
    }

所以它不起什么作用。

我能看到的唯一用途是这样的:

代码语言:javascript
复制
            foreach (CategoryAttribute attrib in prop.GetCustomAttributes(typeof(CategoryAttribute), false))
            {
                bool result = attrib.Equals(CategoryAttribute.Appearance);
            }

基本上,当使用反射查看类时,您可以轻松地检查它属于哪个类别,而无需进行字符串比较。但不幸的是你不能以你想要的方式使用它。

票数 4
EN

Stack Overflow用户

发布于 2009-03-05 14:33:33

静态属性通过CategoryAttribute.Appearance访问。但是属性系统不允许在属性声明中调用代码,我猜这就是为什么它不会为您编译。你可能不得不满足于类别(“外观”)。

票数 2
EN

Stack Overflow用户

发布于 2022-06-11 18:46:49

从C# 6开始,最终有一个更好的选择:[Category(nameof(CategoryAttribute.Appearance))]

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/614951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档