Question

J'ai lu quelques mots sur les Attributs de conception pour les composants . J'ai trouvé un attribut intitulé CategoryAttribute . Sur cette page, il est indiqué que

  

La classe CategoryAttribute définit les catégories communes suivantes:

Et énumère ensuite un certain nombre de catégories communes. Apparence , par exemple. J'ai pensé, génial! Ensuite, je peux utiliser [Catégorie.Apparence] au lieu de [Catégorie (" Apparence ")] ! Mais apparemment je ne pouvais pas? J'ai essayé de l'écrire, mais Intellisense ne l'a pas ramassé et ne l'a pas compilée. Est-ce que j'ai râté quelque chose? Était-ce peut-être pas ce que ces propriétés étaient? Si non, à quoi servent-ils? Si oui, comment puis-je les utiliser?

Et oui, j'ai le correct en utilisant pour accéder au CategoryAttribute , car [Catégorie (" Quoi que ")] faire du travail. Je me demande simplement comment j'utilise ces catégories communes définies.

Était-ce utile?

La solution

Comme vous pouvez le constater sur MSDN, il ne s’agit que d’une propriété getter, et non d’un setter.

public static CategoryAttribute Appearance { get; }

En fait, voici à quoi ressemble le code en utilisant Reflector:

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

Donc, cela ne fait pas énormément.

La seule utilisation que je puisse en voir est quelque chose comme ceci:

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

En gros, lorsque vous utilisez la réflexion pour regarder la classe, vous pouvez facilement vérifier à quelle catégorie elle appartient sans avoir à faire de comparaison de chaînes. Mais vous ne pouvez pas l'utiliser de la manière que vous essayez malheureusement.

Autres conseils

La propriété statique est accessible via CategoryAttribute.Appearance. Mais le système d'attributs ne vous permet pas d'appeler du code dans une déclaration d'attribut et je suppose que c'est pourquoi il ne compilera pas pour vous. Vous devrez probablement vous contenter de [Catégorie (" Apparence ")].

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top