Pregunta

He leído un poco sobre Atributos en tiempo de diseño para componentes . Allí encontré un atributo llamado CategoryAttribute . En esa página dice que

  

La clase de atributo de categoría define las siguientes categorías comunes:

Y luego enumera una serie de categorías comunes. Uno de ellos es, por ejemplo, Apariencia . Pensé, brillante! ¡Entonces puedo usar [Category.Appearance] en lugar de [Category (" Appearance ")] ! Pero al parecer no pude? Intenté escribirlo, pero Intellisense no lo detectaría y no compilaría. ¿Me estoy perdiendo de algo? ¿Tal vez no era para eso que eran esas propiedades? Si no, ¿para qué sirven? Si lo son, ¿cómo los uso?

Y sí, tengo el correcto usando para tener acceso al CategoryAttribute , porque [Categoría (" Lo que sea ")] hacer trabajo. Me pregunto cómo uso esas categorías comunes definidas.

¿Fue útil?

Solución

Como puede ver en MSDN, es solo una propiedad getter, no un setter.

public static CategoryAttribute Appearance { get; }

De hecho, esto es lo que parece el código al usar Reflector:

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

Así que no hace mucho.

El único uso que puedo ver, es algo como esto:

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

Básicamente, cuando se usa la reflexión para mirar la clase, puede verificar fácilmente a qué categoría pertenece sin tener que hacer una comparación de cadenas. Pero desafortunadamente, no puede usarlo de la manera que intenta

Otros consejos

Se accede a la propiedad estática a través de CategoryAttribute.Appearance. Pero el sistema de atributos no le permite invocar código en una declaración de atributos y supongo que es por eso que no se compilará para usted. Probablemente tendrá que conformarse con [Categoría (" Apariencia ")].

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top