Freigeben über


Erstellen von benutzerdefinierten Attributen (Visual Basic)

Sie können eigene benutzerdefinierte Attribute erstellen, indem Sie eine Attributklasse definieren, eine Klasse, die direkt oder indirekt von Attributedieser abgeleitet wird, wodurch die Identifizierung von Attributdefinitionen in Metadaten schnell und einfach ist. Angenommen, Sie möchten Typen mit dem Namen des Programmierers markieren, der den Typ geschrieben hat. Sie können eine benutzerdefinierte Author Attributklasse definieren:

<System.AttributeUsage(System.AttributeTargets.Class Or
                       System.AttributeTargets.Struct)>
Public Class Author
    Inherits System.Attribute
    Private name As String
    Public version As Double
    Sub New(ByVal authorName As String)
        name = authorName
        version = 1.0
    End Sub
End Class

Der Klassenname ist der Name des Attributs. Author Es wird von System.Attributeabgeleitet, sodass es sich um eine benutzerdefinierte Attributklasse handelt. Die Parameter des Konstruktors sind die Positionsparameter des benutzerdefinierten Attributs. In diesem Beispiel name handelt es sich um einen Positionsparameter. Alle öffentlichen Lese-/Schreibfelder oder -eigenschaften sind benannte Parameter. In diesem Fall version ist der einzige benannte Parameter. Beachten Sie die Verwendung des AttributeUsage Attributs, um das Author Attribut nur für Klassen und Structure Deklarationen gültig zu machen.

Sie können dieses neue Attribut wie folgt verwenden:

<Author("P. Ackerman", Version:=1.1)>
Class SampleClass
    ' P. Ackerman's code goes here...
End Class

AttributeUsage hat einen benannten Parameter, AllowMultiple, mit dem Sie ein benutzerdefiniertes Attribut als einmalig oder mehrfach verwendbar festlegen können. Im folgenden Codebeispiel wird ein Attribut mit mehrfacher Verwendung erstellt.

' multiuse attribute
<System.AttributeUsage(System.AttributeTargets.Class Or
                       System.AttributeTargets.Struct,
                       AllowMultiple:=True)>
Public Class Author
    Inherits System.Attribute

Im folgenden Codebeispiel werden mehrere Attribute desselben Typs auf eine Klasse angewendet.

<Author("P. Ackerman", Version:=1.1),
Author("R. Koch", Version:=1.2)>
Class SampleClass
    ' P. Ackerman's code goes here...
    ' R. Koch's code goes here...
End Class

Hinweis

Wenn Ihre Attributklasse eine Eigenschaft enthält, muss diese Eigenschaft lesbar und schreibbar sein.

Siehe auch