C #: Как использовать свойство CategoryAttribute.Appearance - PullRequest
4 голосов
/ 05 марта 2009

Я немного прочитал о Атрибутах времени разработки для компонентов . Там я нашел атрибут с именем CategoryAttribute . На этой странице написано, что

Класс CategoryAttribute определяет следующие общие категории:

А затем перечисляет ряд общих категорий. Например, Внешний вид . Я думал, блестящий! Тогда я могу использовать [Category.Appearance] вместо [Category("Appearance")]! Но, видимо, я не мог? Пытался написать, но Intellisense не поднял бы его и не скомпилировал. Я что-то здесь упускаю? Может быть, не для этого были эти свойства? Если нет, то для чего они? Если они есть, как их использовать?

И да, у меня есть правильный using для доступа к CategoryAttribute, потому что [Category("Whatever")] работает Мне просто интересно, как я использую эти определенные общие категории.

Ответы [ 2 ]

4 голосов
/ 05 марта 2009

Как вы можете видеть в MSDN, это только свойство getter, а не setter.

public static CategoryAttribute Appearance { get; }

На самом деле, вот как выглядит код с использованием Reflector:

 public static CategoryAttribute Appearance
    {
        get
        {
            if (appearance == null)
            {
                appearance = new CategoryAttribute("Appearance");
            }
            return appearance;
        }
    }

Так что это не очень много значит.

Единственное использование, которое я вижу, это примерно так:

            foreach (CategoryAttribute attrib in prop.GetCustomAttributes(typeof(CategoryAttribute), false))
            {
                bool result = attrib.Equals(CategoryAttribute.Appearance);
            }

По сути, при использовании отражения для просмотра класса вы можете легко проверить, к какой категории он относится, без сравнения строк. Но вы не можете использовать это так, как вы, к сожалению, пытаетесь.

2 голосов
/ 05 марта 2009

Доступ к статическому свойству осуществляется через CategoryAttribute.Appearance. Но система атрибутов не позволяет вам вызывать код в объявлении атрибута, и я думаю, именно поэтому он не будет компилироваться для вас. Возможно, вам придется согласиться на [Категория ("Внешний вид")].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...