La documentación de la clase DefaultValueAttribute es confusa
En este artículo se explica la documentación confusa para la clase DefaultValueAttribute.
Versión del producto original: .NET Framework
Número KB original: 311339
Resumen
La documentación de la DefaultValueAttribute clase puede ser confusa. En concreto, esta documentación indica lo siguiente:
El valor predeterminado de un miembro suele ser su valor inicial.
A partir de esto, puede concluir que si establece el atributo para una propiedad, la propiedad DefaultValue se inicializa en ese valor. Sin embargo, debe establecer el atributo de DefaultValue la propiedad igual a su valor inicializado.
Más información
El tema Extender metadatos mediante atributos indica:
Common Language Runtime permite agregar declaraciones descriptivas similares a palabras clave, denominadas atributos, para anotar elementos de programación como tipos, campos, métodos y propiedades. Los atributos se guardan con los metadatos de un archivo .NET Framework microsoft y se pueden usar para describir el código en tiempo de ejecución o para afectar al comportamiento de la aplicación en tiempo de ejecución.
Si el atributo de la propiedad es igual a su valor inicializado, puede obtener acceso a los metadatos de la propiedad para determinar el valor predeterminado. A continuación, puede usar este valor predeterminado para restablecer la variable de miembro correspondiente si es necesario. También puede escribir generadores de código para usar el atributo para determinar si se debe generar DefaultValue código para la variable miembro. Debe determinar si se debe generar código para que la variable miembro establezca su valor inicial correctamente.
Sin embargo, DefaultValue el atributo no hace que el valor inicial se inicialice con el valor del atributo. Por ejemplo, en el siguiente ejemplo de código, la propiedad tiene un valor predeterminado de True y también se inicializa IsValueSet en un valor de True. Si no se inicializa, el valor inicial m_isValueSet de es False.
Imports System.ComponentModel
Public Class DefaultAttributeSample
' You must still initialize your member variable to its default value;
' the DefaultValue attribute does not do this.
Private m_isValueSet As Boolean = True
' The DefaultValue attribute should be equal to the member's initial
' value.
<DefaultValueAttribute(True)> _
Public Property IsValueSet() As Boolean
Get
IsValueSet = m_isValueSet
End Get
Set(ByVal Value As Boolean)
m_isValueSet = Value
End Set
End Property
End Class
Para obtener más información acerca de cómo aplicar atributos para que proporcionen metadatos al common language runtime, consulte Extending Metadata Using Attributes.
Dado que puede mostrar componentes en un diseñador como Visual Studio .NET o Visual Studio, los componentes requieren atributos que proporcionan metadatos a las herramientas en tiempo de diseño.
Para mostrar el control y sus miembros correctamente en tiempo de diseño, los atributos en tiempo de diseño son esenciales porque proporcionan información valiosa a una herramienta de diseño visual. Por ejemplo, en el siguiente fragmento de código, el atributo permite al explorador CategoryAttribute de propiedades mostrar la propiedad en la TextAlignment Alignment categoría. El DescriptionAttribute atributo permite al explorador de propiedades proporcionar una breve descripción de la propiedad cuando un usuario hace clic en ella.
[
Category ("Alignment"),
Description ("Specifies the alignment of text.")
]
public ContentAlignment TextAlignment { //... }
<Category("Alignment"), _
Description("Specifies the alignment of text.")> _
Public Property TextAlignment As ContentAlignment
' ...
End Property
Nota
En Visual C# .NET, Visual Basic .NET o Visual Basic, puede hacer referencia a una clase de atributo denominada simplemente como en la sintaxis AttributeNameAttribute AttributeName de atributo.
Referencias
Para obtener más información, vea Attributes Overview.