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_isValueSet
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
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.
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für