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 für optionale Parameter, und stellen Sie eine Lese-/Schreibeigenschaft für jedes benannte Argument bereit.
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 unter „Framework-Entwurfs-Richtlinien: Idiome, Konventionen und Muster für wiederverwendbare .NET-Bibliotheken von Krzysztof Cwalina“ book und Brad Abrams, veröffentlicht von Addison-Wesley, 2005.