Instrucciones de uso de atributos
.NET Framework permite a los programadores inventar nuevas clases de información declarativa, especificar información declarativa para entidades de programas diversos y recuperar la información sobre atributos en el entorno del motor en tiempo de ejecución. Por ejemplo, en un marco de trabajo se puede definir un atributo HelpAttribute
que se puede colocar en elementos de programa como clases y métodos, para proporcionar una asignación de los elementos del programa a la documentación correspondiente. En la declaración de clases de atributos se pueden definir nuevas clases de información declarativa, que pueden tener parámetros con nombres y parámetros posicionales. Para obtener más información, vea Escribir atributos personalizados.
En las reglas siguientes se describen las instrucciones de uso de las clases de atributos:
Agregue el sufijo
Attribute
a clases de atributos personalizados, como se muestra en el siguiente ejemplo.Public Class ObsoleteAttribute{}
public class ObsoleteAttribute{}
Especifique
AttributeUsage
en los atributos para definir su utilización exacta, como se muestra en el siguiente ejemplo.<AttributeUsage(AttributeTargets.All, Inherited := False, AllowMultiple := True)> _ Public Class ObsoleteAttribute Inherits Attribute ' Insert code here. End Class
[AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple = true)] public class ObsoleteAttribute: Attribute {}
Selle las clases de atributos siempre que sea posible, para que no se pueda derivar ninguna clase.
Utilice argumentos posicionales (parámetros del constructor) en los parámetros requeridos. Proporcione una propiedad de sólo lectura con el mismo nombre que el argumento posicional, pero cambie el uso de las mayúsculas y minúsculas para diferenciarlos. Esto permite el acceso al argumento en tiempo de ejecución.
Utilice argumentos con nombres (propiedades de lectura y escritura) en los parámetros opcionales. Proporcione una propiedad de lectura/escritura con el mismo nombre que el argumento con nombre, pero cambie el uso de las mayúsculas y minúsculas para diferenciarlos.
No defina un parámetro con argumentos posicionales y argumentos con nombre. En el siguiente ejemplo de código se muestra este modelo.
Public Class NameAttribute Inherits Attribute Private userNameValue as String Private ageValue as Integer ' This is a positional argument. Public Sub New(userName As String) userNameValue = userName End Sub Public ReadOnly Property UserName() As String Get Return userNameValue End Get End Property ' This is a named argument. Public Property Age() As Integer Get Return ageValue End Get Set ageValue = value End Set End Property End Class
public class NameAttribute: Attribute { string userName; int age; // This is a positional argument. public NameAttribute (string userName) { this.userName = userName; } public string UserName { get { return userName; } } // This is a named argument. public int Age { get { return age; } set { age = value; } } }
Portions Copyright 2005 Microsoft Corporation. Reservados todos los derechos.
Portions Copyright Addison-Wesley Corporation. Reservados todos los derechos.
Para obtener más información sobre las directrices de diseño, consulte el libro titulado "Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries" de Krzysztof Cwalina y Brad Abrams, publicado por Addison-Wesley, 2005.
Vea también
Conceptos
Otros recursos
Instrucciones de diseño para desarrollar bibliotecas de clases