Вопрос

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

  

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

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

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

Это было полезно?

Решение

Как вы можете видеть в 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);
            }

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top