Attribute sind Metadaten. In der Regel möchten Sie ein Element dekorieren oder mit einem Attribut versehen, um einige Informationen darüber zu finden.
Zum Beispiel wird die Description von Property verwendet, um eine Beschreibung einer Eigenschaft zu beschriften:
[Description("This is my property")]
public int MyProperty { get; set; }
Die meiste Zeit, würde mehr als eine Beschreibung, die keinen Sinn machen.
Es ist jedoch möglich, dass ein bestimmtes Attribut sinnvoll ist, wenn es mehrmals verwendet wird. In diesem Fall sollten Sie das Attribut so einstellen, dass mehrere Instanzen von sich mit demselben Attribut versehen sind.
(Nicht, dass ich das tun würde, aber ...) Angenommen, Sie haben ein benutzerdefiniertes Attribut erstellt, um wichtige Änderungen an einer Klasse zu verfolgen. Sie können dies für jede größere Änderung auflisten:
[Changes(Version=1.1, Change="Added Foo Feature")]
[Changes(Version=2.0, Change="Added Bar Feature")]
public class MyClass
{
// ...
Um auf Ihrem Beschreibungsbeispiel aufzubauen und das Beispiel "Ich würde dies nicht tun" zu vermeiden, betrachten Sie ein LocalisedDescriptionAttribute, das sowohl eine Ländereinstellung als auch eine Beschreibung enthält. Dies könnte für verschiedene Locales mehrfach angewendet werden: '[LocalisedDescription (" en-NZ "," sweet as ")] [LocalisedDescription (" en-GB "," jolly gut ")]'. – itowlson
Viel besser formuliert als meine Antwort :) –
@itowlson: Ja, obwohl ich wahrscheinlich wieder die Standardlokalisierungsoptionen verwenden würde ... Das wäre aber ein anderes gutes Beispiel. –