Freigeben über


Attributes (.NET Framework-Entwurfsrichtlinien)

Hinweis

Dieser Inhalt wird mit Genehmigung von Pearson Education, Inc. aus Framework Design Guidelines: Konventionen, Idiome und Muster für wiederverwendbare .NET-Bibliotheken, 2. Auflage nachgedruckt. Diese Ausgabe wurde 2008 veröffentlicht, und das Buch wurde seitdem in der dritten Ausgabe vollständig überarbeitet. Einige der Informationen auf dieser Seite sind möglicherweise veraltet.

System.Attribute ist eine Basisklasse, die zum Definieren von benutzerdefinierten Attributen verwendet wird.

Attribute sind Anmerkungen, die Programmierelementen wie Assemblys, Typen, Membern und Parametern hinzugefügt werden können. Sie werden in den Metadaten der Assembly gespeichert und können zur Laufzeit mithilfe der Spiegelungs-APIs aufgerufen werden. Das Framework definiert z. B. das ObsoleteAttribute, das auf einen Typ oder ein Element angewendet werden kann, um anzugeben, dass der Typ oder das Element als veraltet markiert ist.

Attribute können eine oder mehrere Eigenschaften aufweisen, die zusätzliche Daten im Zusammenhang mit dem Attribut enthalten. Beispielsweise könnte ObsoleteAttribute zusätzliche Informationen über die Version enthalten, in der ein Typ oder ein Mitglied veraltet ist, sowie die Beschreibung der neuen APIs, die die veraltete API ersetzen.

Einige Eigenschaften eines Attributs müssen angegeben werden, wenn das Attribut angewendet wird. Diese werden als erforderliche Eigenschaften oder erforderliche Argumente bezeichnet, da sie als Positionskonstruktorparameter dargestellt werden. Beispielsweise ist die ConditionString-Eigenschaft von ConditionalAttribute eine erforderliche Eigenschaft.

Eigenschaften, die nicht unbedingt angegeben werden müssen, wenn das Attribut angewendet wird, werden als optionale Eigenschaften (oder optionale Argumente) bezeichnet. Sie werden durch einstellbare Eigenschaften dargestellt. Compiler stellen spezielle Syntax bereit, um diese Eigenschaften festzulegen, wenn ein Attribut angewendet wird. Beispielsweise stellt die Eigenschaft AttributeUsageAttribute.Inherited ein optionales Argument dar.

✔️ BENENNEN Sie benutzerdefinierte Attributklassen mit dem Suffix „Attribute“.

✔️ Wenden Sie die AttributeUsageAttribute auf benutzerdefinierte Attribute an.

✔️ DO stellt konfigurierbare Eigenschaften für optionale Argumente bereit.

✔️ STELLEN Sie „get-only“-Eigenschaften für erforderliche Argumente bereit.

✔️ DO stellt Konstruktorparameter bereit, um Eigenschaften zu initialisieren, die den erforderlichen Argumenten entsprechen. Jeder Parameter sollte denselben Namen (jedoch mit unterschiedlicher Groß-/Kleinschreibung) wie die entsprechende Eigenschaft aufweisen.

❌ VERMEIDEN Sie die Bereitstellung von Konstruktorparametern zum Initialisieren von Eigenschaften, die den optionalen Argumenten entsprechen.

Anders ausgedrückt: Sie verfügen nicht über Eigenschaften, die sowohl mit einem Konstruktor als auch mit einem Setter festgelegt werden können. Diese Richtlinie macht sehr explizit, welche Argumente optional sind und welche erforderlich sind, und verhindert, dass sie zwei Möglichkeiten haben, dasselbe zu tun.

❌ VERMEIDEN Sie das Überladen von benutzerdefinierten Attributkonstruktoren.

Mit nur einem Konstruktor wird dem Benutzer eindeutig kommuniziert, welche Argumente erforderlich sind und welche optional sind.

✔️ Versiegeln Sie benutzerdefinierte Attributklassen, falls möglich. Dadurch wird die Suche für das Attribut schneller.

© Teile 2005, 2009 Microsoft Corporation. Alle Rechte vorbehalten.

Nachdruck mit freundlicher Genehmigung von Pearson Education, Inc., aus dem Buch Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition von Krzysztof Cwalina und Brad Abrams, veröffentlicht am 22. Oktober 2008 von Addison-Wesley Professional als Teil der Microsoft Windows Development Series.

Siehe auch