Die 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 angegeben:
Der Standardwert eines Elements ist in der Regel der Anfangswert.

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

Weitere Informationen

Die Themenstatus der Erweiterung von Metadaten mithilfe von Attributen:

Mit der Common Language Runtime können Sie schlüsselwortähnliche beschreibende Deklarationen, so genannte Attribute, hinzufügen, um Programmierelemente wie Typen, Felder, Methoden und Eigenschaften zu kommentieren. Attribute werden mit den Metadaten einer Microsoft .NET Framework-Datei gespeichert und können verwendet werden, um Ihren Code zur Laufzeit zu beschreiben oder um 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 ermitteln. Anschließend können Sie 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 ermitteln, ob Code generiert werden soll, damit die Membervariable ihren Anfangswert ordnungsgemäß festlegen kann.

Das Attribut bewirkt jedoch DefaultValue nicht, dass der Anfangswert mit dem Attributwert initialisiert wird. Im folgenden Codebeispiel hat die Eigenschaft beispielsweise den IsValueSet Standardwert True und wird auch mit dem Wert True initialisiert. Wenn nicht initialisiert, ist der Anfangswert false m_isValueSet .

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 anzeigen können, z. B. Visual Studio .NET oder Visual Studio, erfordern Komponenten Attribute, die Metadaten für Entwurfszeittools bereitstellen.

Um Das Steuerelement und seine Elemente zur Entwurfszeit korrekt anzuzeigen, sind Entwurfszeitattribute wichtig, da sie wertvolle Informationen für ein visuelles Designtool bereitstellen. Im folgenden Codefragment ermöglicht das Attribut beispielsweise CategoryAttribute dem Eigenschaftenbrowser, die TextAlignment Eigenschaft in der Kategorie Alignment anzuzeigen. Mit DescriptionAttribute dem Attribut kann der Eigenschaftenbrowser eine kurze Beschreibung der Eigenschaft bereitstellen, 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 einfach AttributeNameAttribute wie in der Attributsyntax auf eine Attributklasse mit dem Namen AttributeName verweisen.

References

Weitere Informationen finden Sie unter Attributes Overview.