C #: Cómo usar la propiedad CategoryAttribute.Appearance
-
03-07-2019 - |
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.
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 ")].