Teilen über


Attribute (.NET Framework-Entwurfsrichtlinien)

Hinweis

Diese Inhalte wurden mit Genehmigung von Pearson Education, Inc. aus Framework Design Guidelines nachgedruckt: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition. 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 auf sie kann zur Laufzeit mithilfe der Reflexions-APIs zugegriffen werden. Das Framework definiert z. B. ObsoleteAttribute, das auf einen Typ oder einen Member angewendet werden kann, um anzugeben, dass der Typ oder Member veraltet ist.

Attribute können über mindestens eine Eigenschaft verfügen, die zusätzliche Daten enthält, die sich auf das Attribut beziehen. Beispielsweise könnte ObsoleteAttribute zusätzliche Informationen zum Release enthalten, in dem ein Typ oder ein Member als veraltet eingestuft wurde, 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, weil sie als positionelle Konstruktorparameter dargestellt werden. Die ConditionString-Eigenschaft von ConditionalAttribute ist beispielsweise 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 festlegbare Eigenschaften dargestellt. Compiler stellen spezielle Syntax bereit, um diese Eigenschaften festzulegen, wenn ein Attribut angewendet wird. Die AttributeUsageAttribute.Inherited-Eigenschaft stellt z. B. ein optionales Argument dar.

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

✔️ WENDEN Sie AttributeUsageAttribute auf benutzerdefinierte Attribute an.

✔️ STELLEN Sie festlegbare Eigenschaften für optionale Argumente bereit.

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

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

❌ VERMEIDEN Sie das Bereitstellen von Konstruktorparametern, um Eigenschaften entsprechend den optionalen Argumenten zu initialisieren.

Anders ausgedrückt: Verwenden Sie keine Eigenschaften, die sowohl mit einem Konstruktor als auch mit einem Setter festgelegt werden können. Diese Richtlinie zeigt sehr explizit, welche Argumente optional und welche erforderlich sind, und vermeidet zwei Möglichkeiten zum Ausführen der gleichen Aktion.

❌ VERMEIDEN Sie das Überladen benutzerdefinierter Attributkonstruktoren.

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

✔️ Versiegeln Sie benutzerdefinierte Attributklassen nach Möglichkeit. Dadurch wird die Suchen nach dem Attribut beschleunigt.

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

Nachdruck mit Genehmigung von Pearson Education, Inc aus 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 durch Addison-Wesley Professional als Teil der Microsoft Windows Development Series.

Weitere Informationen