Während der Code zum Erstellen eines benutzerdefinierten Attributs ziemlich einfach ist, ist es sehr wichtig, dass Sie verstehen, was Attribute sind:
Attribute sind Metadaten, die in Ihrem Programm kompiliert wurden. Attribute selbst fügen einer Klasse, Eigenschaft oder einem Modul keine Funktionalität hinzu - nur Daten. Mithilfe der Reflexion können diese Attribute jedoch genutzt werden, um Funktionen zu erstellen.
Schauen wir uns zum Beispiel den Validierungsanwendungsblock aus der Microsoft Enterprise Library an . Wenn Sie sich ein Codebeispiel ansehen, sehen Sie:
/// <summary>
/// blah blah code.
/// </summary>
[DataMember]
[StringLengthValidator(8, RangeBoundaryType.Inclusive, 8, RangeBoundaryType.Inclusive, MessageTemplate = "\"{1}\" must always have \"{4}\" characters.")]
public string Code { get; set; }
Aus dem obigen Snippet könnte man schließen, dass der Code immer validiert wird, wenn er gemäß den Regeln des Validators geändert wird (im Beispiel mindestens 8 Zeichen und höchstens 8 Zeichen). Aber die Wahrheit ist, dass das Attribut nichts tut; Wie bereits erwähnt, werden der Eigenschaft nur Metadaten hinzugefügt.
Die Unternehmensbibliothek verfügt jedoch über eine Validation.Validate
Methode, die Ihr Objekt untersucht und für jede Eigenschaft prüft, ob der Inhalt gegen die durch das Attribut angegebene Regel verstößt.
So sollten Sie also über Attribute nachdenken - eine Möglichkeit, Ihrem Code Daten hinzuzufügen, die später möglicherweise von anderen Methoden / Klassen / etc. Verwendet werden.