Richtlinien für die Verwendung von Attributen
.NET Framework ermöglicht es Entwicklern, neue Arten von deklarativen Informationen zu erfinden, Deklarationen für verschiedene Programmeinheiten anzugeben und Attributinformationen in einer Laufzeitumgebung abzurufen. Beispielsweise kann ein Framework ein HelpAttribute
-Attribut definieren, das in Programmelementen, z. B. Klassen und Methoden, eingefügt werden kann, um eine Zuordnung von Programmelementen zu ihrer Dokumentation bereitzustellen. Neue Arten von deklarativen Informationen werden über die Deklaration von Attributklassen definiert, die Positions- und benannte Parameter aufweisen können. Weitere Informationen zu Attributen finden Sie unter Verfassen von benutzerdefinierten Attributen.
Die folgenden Regeln dienen als Richtlinie für die Verwendung von Attributklassen:
Fügen Sie benutzerdefinierten Attributklassen das
Attribute
-Suffix hinzu, wie im folgenden Beispiel gezeigt.Public Class ObsoleteAttribute{}
public class ObsoleteAttribute{}
Geben Sie
AttributeUsage
für die Attribute an, um die Verwendung der Attribute exakt zu definieren, wie im folgenden Beispiel gezeigt.<AttributeUsage(AttributeTargets.All, Inherited := False, AllowMultiple := True)> _ Public Class ObsoleteAttribute Inherits Attribute ' Insert code here. End Class
[AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple = true)] public class ObsoleteAttribute: Attribute {}
Versiegeln Sie Attribute, wann immer möglich, sodass keine Klassen aus ihnen abgeleitet werden können.
Verwenden Sie Positionsargumente (Konstruktorparameter) für erforderliche Parameter. Stellen Sie für jedes Positionsargument eine gleichnamige schreibgeschützte Eigenschaft bereit, wobei Sie die Groß-/Kleinschreibung ändern, um eine Unterscheidung zu ermöglichen. Dadurch kann zur Laufzeit auf das Argument zugegriffen werden.
Verwenden Sie benannte Argumente (Lese-/Schreibeigenschaften) für optionale Parameter. Stellen Sie für jedes benannte Argument eine gleichnamige Eigenschaft mit Lese‑/Schreibzugriff bereit, wobei Sie die Groß-/Kleinschreibung ändern, um eine Unterscheidung zu ermöglichen.
Definieren Sie einen Parameter nicht mit benannten und Positionsargumenten. Das folgende Codebeispiel veranschaulicht dieses Schema.
Public Class NameAttribute Inherits Attribute Private userNameValue as String Private ageValue as Integer ' This is a positional argument. Public Sub New(userName As String) userNameValue = userName End Sub Public ReadOnly Property UserName() As String Get Return userNameValue End Get End Property ' This is a named argument. Public Property Age() As Integer Get Return ageValue End Get Set ageValue = value End Set End Property End Class
public class NameAttribute: Attribute { string userName; int age; // This is a positional argument. public NameAttribute (string userName) { this.userName = userName; } public string UserName { get { return userName; } } // This is a named argument. public int Age { get { return age; } set { age = value; } } }
Copyright für einzelne Teile 2005 Microsoft Corporation. Alle Rechte vorbehalten.
Copyright für einzelne Teile Addison-Wesley Corporation. Alle Rechte vorbehalten.
Weitere Informationen zu Entwurfsrichtlinien finden Sie im Buch "Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries" von Krzysztof Cwalina und Brad Abrams, veröffentlicht von Addison-Wesley, 2005.