Domanda

Ho letto un po 'di Design-Time Attributes for Components . Lì ho trovato un attributo chiamato CategoryAttribute . In quella pagina si dice che

  

La classe CategoryAttribute definisce le seguenti categorie comuni:

E quindi elenca un numero di categorie comuni. Uno di questi è ad esempio Aspetto . Ho pensato, geniale! Quindi posso usare [Category.Appearance] invece di [Category (" Appearance ")] ! Ma a quanto pare non potrei? Ho provato a scriverlo, ma Intellisense non lo avrebbe raccolto e non si sarebbe compilato. Mi sto perdendo qualcosa qui? Non è forse questo il motivo per cui quelle proprietà erano? In caso contrario, a cosa servono? Se lo sono, come li uso?

E sì, ho il corretto usando per avere accesso al CategoryAttribute , causa [Categoria (" qualunque cosa ")] lavora. Mi sto solo chiedendo come uso quelle categorie comuni definite.

È stato utile?

Soluzione

Come puoi vedere su MSDN, è solo una proprietà getter, non un setter.

public static CategoryAttribute Appearance { get; }

In effetti, ecco come appare il codice usando Reflector:

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

Quindi non fa molto.

L'unico uso che posso vedere per questo è qualcosa del genere:

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

Fondamentalmente, quando usi la riflessione per guardare la classe, puoi facilmente controllare a quale categoria appartiene senza dover fare un confronto tra stringhe. Ma non puoi usarlo nel modo in cui stai sfortunatamente cercando.

Altri suggerimenti

È possibile accedere alla proprietà statica tramite CategoryAttribute.Appearance. Ma il sistema di attributi non ti consente di invocare il codice in una dichiarazione di attributo e credo sia per questo che non verrà compilato per te. Probabilmente dovrai accontentarti di [Categoria (" Aspetto ")].

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top