Erstellen benutzerdefinierter Attribute (C# und Visual Basic)
Sie können eigene benutzerdefinierte Attribute erstellen, indem Sie eine Attributklasse definieren. Dies ist eine Klasse, die direkt oder indirekt Elemente von Attribute ableitet, wodurch die schnelle und einfache Identifikation von Attributdefinitionen in Metadaten ermöglicht wird. Angenommen, Sie möchten Typen mit dem Namen des Programmierers kennzeichnen, der den Typ erstellt hat. Sie könnten beispielsweise 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
[System.AttributeUsage(System.AttributeTargets.Class |
System.AttributeTargets.Struct)
]
public class Author : System.Attribute
{
private string name;
public double version;
public Author(string name)
{
this.name = name;
version = 1.0;
}
}
Der Klassenname entspricht dem Attributnamen, also Author. Da er von System.Attribute abgeleitet ist, handelt es sich um eine benutzerdefinierte Attributklasse. Als Parameter des Konstruktors werden die Positionsparameter des benutzerdefinierten Attributs verwendet. In diesem Beispiel ist name ein Positionsparameter. Alle öffentlichen Schreib-Lese-Felder oder -Eigenschaften sind benannte Parameter. In diesem Fall ist version der einzige benannte Parameter. Das AttributeUsage-Attribut wird verwendet, um die Gültigkeit des Author-Attributs auf Klassen- und struct- (in Visual Basic Structure-)Deklarationen zu beschränken.
Das neue Attribut könnte wie folgt verwendet werden:
<Author("P. Ackerman", Version:=1.1)>
Class SampleClass
' P. Ackerman's code goes here...
End Class
[Author("P. Ackerman", version = 1.1)]
class SampleClass
{
// P. Ackerman's code goes here...
}
AttributeUsage verfügt über den benannten Parameter AllowMultiple, mit dem ein benutzerdefiniertes Attribut für die einfache oder mehrfache Verwendung konfiguriert werden kann. Im folgenden Codebeispiel wird ein mehrfach verwendbares Attribut erstellt.
' multiuse attribute
<System.AttributeUsage(System.AttributeTargets.Class Or
System.AttributeTargets.Struct,
AllowMultiple:=True)>
Public Class Author
Inherits System.Attribute
[System.AttributeUsage(System.AttributeTargets.Class |
System.AttributeTargets.Struct,
AllowMultiple = true) // multiuse attribute
]
public class Author : 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
[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...
}
Tipp
Wenn die Attributklasse eine Eigenschaft enthält, muss diese Eigenschaft Lese-Schreib-Zugriff bieten.
Siehe auch
Referenz
Reflektion (C# und Visual Basic)
Attribute (C# und Visual Basic)
Zugreifen auf Attribute mithilfe der Reflektion (C# und Visual Basic)
AttributeUsage (C# und Visual Basic)
Konzepte
Verfassen von benutzerdefinierten Attributen