Dokumentation für die DefaultValueAttribute-Klasse ist verwirrend

In diesem Artikel wird die verwirrende Dokumentation für die DefaultValueAttribute-Klasse erläutert.

Ursprüngliche Produktversion: .NET Framework
Ursprüngliche KB-Nummer: 311339

Zusammenfassung

Die Dokumentation für die DefaultValueAttribute -Klasse kann verwirrend sein. In dieser Dokumentation wird insbesondere Folgendes beschrieben:
Der Standardwert eines Elements ist in der Regel sein Anfangswert.

Daraus können Sie schließen, dass die Eigenschaft mit diesem DefaultValue Wert initialisiert wird, wenn Sie das Attribut für eine Eigenschaft festlegen. Sie sollten jedoch das Attribut der Eigenschaft DefaultValue auf den initialisierten Wert festlegen.

Weitere Informationen

Das Thema Erweitern von Metadaten mithilfe von Attributen :

Mit der Common Language Runtime können Sie Schlüsselwort (keyword) beschreibende Deklarationen hinzufügen, die als Attribute bezeichnet werden, um Programmierelemente wie Typen, Felder, Methoden und Eigenschaften mit Anmerkungen zu versehen. Attribute werden mit den Metadaten einer Microsoft .NET Framework-Datei gespeichert und können verwendet werden, um Ihren Code zur Laufzeit zu beschreiben oder das Anwendungsverhalten zur Laufzeit zu beeinflussen.

Wenn das Attribut der Eigenschaft dem initialisierten Wert entspricht, können Sie auf die Metadaten der Eigenschaft zugreifen, um den Standardwert zu bestimmen. Sie können dann diesen Standardwert verwenden, um die entsprechende Membervariable bei Bedarf zurückzusetzen. Sie können auch Codegeneratoren schreiben, um das DefaultValue -Attribut zu verwenden, um zu bestimmen, ob Code für die Membervariable generiert werden soll. Sie müssen bestimmen, ob Code für die Membervariable generiert werden soll, um ihren Anfangswert ordnungsgemäß festzulegen.

Das Attribut bewirkt jedoch nicht, DefaultValue dass der Anfangswert mit dem Wert des Attributs initialisiert wird. Im folgenden Codebeispiel weist die IsValueSet Eigenschaft beispielsweise den Standardwert True auf und wird ebenfalls mit dem Wert True initialisiert. Wenn nicht initialisiert, ist der Anfangswert von m_isValueSetFalse.

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

Weitere Informationen zum Anwenden von Attributen, damit sie Metadaten für die Common Language Runtime bereitstellen, finden Sie unter Erweitern von Metadaten mithilfe von Attributen.

Da Sie Komponenten in einem Designer wie Visual Studio .NET oder Visual Studio anzeigen können, benötigen Komponenten Attribute, die Metadaten für Entwurfszeittools bereitstellen.

Damit Das Steuerelement und seine Member zur Entwurfszeit korrekt angezeigt werden können, sind Entwurfszeitattribute unerlässlich, da sie wertvolle Informationen für ein visuelles Entwurfstool bereitstellen. Beispielsweise ermöglicht das -Attribut im folgenden Codefragment dem CategoryAttribute Eigenschaftenbrowser, die TextAlignment Eigenschaft in der Alignment Kategorie anzuzeigen. Das DescriptionAttribute Attribut ermöglicht es dem Eigenschaftenbrowser, eine kurze Beschreibung der Eigenschaft bereitzustellen, wenn ein Benutzer darauf klickt.

[
    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

Hinweis

In Visual C# .NET, Visual Basic .NET oder Visual Basic können Sie auf eine Attributklasse mit dem Namen verweisen, die einfach wie AttributeName in der Attributsyntax angegeben AttributeNameAttribute ist.

References

Weitere Informationen finden Sie unter Übersicht über Attribute.