Share via


Atributos (directrices de diseño de .NET Framework)

Nota:

Este contenido se ha copiado con permiso de Pearson Education, Inc. de Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2ª edición. Esa edición se publicó en 2008 y el libro se ha revisado completamente en la tercera edición. Parte de la información de esta página puede estar obsoleta.

System.Attribute es una clase base que se usa para definir atributos personalizados.

Los atributos son anotaciones que se pueden agregar a elementos de programación como ensamblados, tipos, miembros y parámetros. Se almacenan en los metadatos del ensamblado, y se puede acceder a ellos en tiempo de ejecución mediante las API de reflexión. Por ejemplo, el marco define el atributo ObsoleteAttribute, que se puede aplicar a un tipo o un miembro para indicar que el tipo o miembro está en desuso.

Los atributos pueden tener una o varias propiedades que contienen datos adicionales relacionados con el atributo. Por ejemplo, ObsoleteAttribute podría incluir información adicional sobre en qué versión un tipo o un miembro quedó en desuso, así como la descripción de las nuevas API que reemplazan a la API obsoleta.

Se deben especificar algunas propiedades de un atributo cuando se aplica el atributo. Estas se conocen como "propiedades requeridas" o "argumentos necesarios", porque se representan como parámetros del constructor posicional. Por ejemplo, la propiedad ConditionString del atributo ConditionalAttribute es una propiedad obligatoria.

Las propiedades que no tienen que especificarse necesariamente cuando se aplica el atributo se denominan "propiedades opcionales" (o "argumentos opcionales"). Se representan mediante propiedades que se pueden establecer. Los compiladores proporcionan una sintaxis especial para establecer estas propiedades cuando se aplica un atributo. Por ejemplo, la propiedad AttributeUsageAttribute.Inherited representa un argumento opcional.

✔️ Asigne un nombre a las clases de atributos personalizados con el sufijo "Attribute".

✔️ Aplique el atributo AttributeUsageAttribute a los atributos personalizados.

✔️ Proporcione propiedades que se pueden establecer para los argumentos opcionales.

✔️ Proporcione propiedades get-only para los argumentos requeridos.

✔️ Proporcione parámetros de constructor para inicializar las propiedades correspondientes a los argumentos necesarios. Cada parámetro debe tener el mismo nombre (aunque con distinto uso de mayúsculas y minúsculas) que la propiedad correspondiente.

❌ EVITE proporcionar parámetros de constructor para inicializar las propiedades correspondientes a los argumentos opcionales.

En otras palabras, no tenga propiedades que se puedan establecer con un constructor y un establecedor. Esta instrucción consigue que resulte evidente qué argumentos son opcionales y cuáles necesarios, y evita tener dos formas de hacer lo mismo.

❌ EVITE sobrecargar los constructores de atributos personalizados.

Tener un solo constructor comunica claramente al usuario qué argumentos son obligatorios y cuáles opcionales.

✔️ Selle las clases de atributos personalizados, si es posible. De esta forma, la búsqueda de atributos será más rápida.

Portions © 2005, 2009 Microsoft Corporation. Todos los derechos reservados.

Material reimpreso con el consentimiento de Pearson Education, Inc. y extraído de Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition (Instrucciones de diseño de .NET Framework: convenciones, expresiones y patrones para bibliotecas .NET reutilizables, 2.ª edición), de Krzysztof Cwalina y Brad Abrams, publicado el 22 de octubre de 2008 por Addison-Wesley Professional como parte de la serie Microsoft Windows Development.

Vea también