Pergunta

Eu li um pouco sobre tempo de design Atributos para Componentes . Lá encontrei um atributo chamado CategoryAttribute . Nessa página ele diz que

A classe CategoryAttribute define as seguintes categorias comuns:

E listas em seguida, até um número de categorias comuns. Um deles são, por exemplo Aparência . Eu pensei, brilhante! Então eu posso usar [Category.Appearance] vez de [Category("Appearance")]! Mas, aparentemente, eu não poderia? Tentei escrevê-lo, mas Intellisense não iria buscá-lo e ele não compilar. Estou faltando alguma coisa aqui? Foi talvez não este essas propriedades eram para? Se não, quais são? Se eles são, como posso usá-los?

E sim, eu tenho o using correta para ter acesso ao CategoryAttribute, causa [Category("Whatever")] fazer o trabalho. Eu só estou querendo saber como eu uso os definidos categorias comuns.

Foi útil?

Solução

Como você pode ver no MSDN é apenas uma propriedade getter, não um setter.

public static CategoryAttribute Appearance { get; }

Na verdade, aqui é o que os olhares código como o uso de refletor:

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

Por isso, não faz um pedaço de um monte.

O único uso que eu posso ver por isso, é algo como isto:

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

Basicamente, ao usar o reflexo para olhar para a classe, você pode facilmente verificar qual categoria este pertence, sem ter que fazer uma comparação de cadeia. Mas você não pode usá-lo da maneira que você está tentando, infelizmente.

Outras dicas

A propriedade estática é acessado através de CategoryAttribute.Appearance. Mas o sistema atributo não permite que você para invocar código em uma declaração de atributo e eu acho que é por isso que ele não vai compilar para você. Você provavelmente terá de se contentar com [Category ( "Aparência")].

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top