La documentazione per la classe DefaultValueAttribute crea confusione
Questo articolo illustra la documentazione confusa per la classe DefaultValueAttribute .
Versione originale del prodotto: .NET Framework
Numero KB originale: 311339
Riepilogo
La documentazione per la DefaultValueAttribute
classe potrebbe creare confusione. In particolare, questa documentazione indica:
Il valore predefinito di un membro è in genere il valore iniziale.
Da questo, è possibile concludere che se si imposta l'attributo DefaultValue
per una proprietà, la proprietà viene inizializzata su tale valore. Tuttavia, è necessario impostare l'attributo della DefaultValue
proprietà su un valore inizializzato.
Ulteriori informazioni
L'argomento Extending Metadata Using Attributes (Estensione dei metadati tramite attributi) indica:
Common Language Runtime consente di aggiungere dichiarazioni descrittive simili a parole chiave, denominate attributi, per annotare elementi di programmazione come tipi, campi, metodi e proprietà. Gli attributi vengono salvati con i metadati di un file di Microsoft .NET Framework e possono essere usati per descrivere il codice nel runtime o per influire sul comportamento dell'applicazione in fase di esecuzione.
Se l'attributo della proprietà è uguale al valore inizializzato, è possibile accedere ai metadati della proprietà per determinare il valore predefinito. È quindi possibile usare questo valore predefinito per reimpostare la variabile membro corrispondente, se necessario. È anche possibile scrivere generatori di codice per usare l'attributo DefaultValue
per determinare se il codice deve essere generato per la variabile membro. È necessario determinare se il codice deve essere generato per la variabile membro per impostare correttamente il valore iniziale.
Tuttavia, l'attributo DefaultValue
non causa l'inizializzazione del valore iniziale con il valore dell'attributo. Nell'esempio di codice seguente, ad esempio, la IsValueSet
proprietà ha un valore predefinito True e viene inizializzata anche su un valore True. Se non inizializzato, il valore iniziale di 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
Per altre informazioni su come applicare gli attributi in modo che forniscano metadati a Common Language Runtime, vedere Estensione dei metadati tramite attributi.
Poiché è possibile visualizzare i componenti in una finestra di progettazione, ad esempio Visual Studio .NET o Visual Studio, i componenti richiedono attributi che forniscono metadati agli strumenti della fase di progettazione.
Per visualizzare correttamente il controllo e i relativi membri in fase di progettazione, gli attributi in fase di progettazione sono essenziali perché forniscono informazioni preziose a uno strumento di progettazione visiva. Nel frammento di codice seguente, ad esempio, l'attributo CategoryAttribute
consente al visualizzatore proprietà di visualizzare la TextAlignment
proprietà nella Alignment
categoria. L'attributo DescriptionAttribute
consente al visualizzatore proprietà di fornire una breve descrizione della proprietà quando un utente fa clic su di essa.
[
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
In Visual C# .NET, Visual Basic .NET o Visual Basic è possibile fare riferimento a una classe di attributi denominata AttributeNameAttribute
semplicemente come AttributeName
nella sintassi dell'attributo.
Riferimenti
Per altre informazioni, vedere Panoramica degli attributi.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per