Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 |
System.AttributeTargets.Struct)
]
public class AuthorAttribute : System.Attribute
{
private string Name;
public double Version;
public AuthorAttribute(string name)
{
Name = name;
Version = 1.0;
}
}
Der Klassenname AuthorAttribute
ist der Name Author
des Attributs und das Attribute
Suffix. Es wird von System.Attribute
abgeleitet, daher ist es eine benutzerdefinierte Attributklasse. 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 struct
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...
}
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.
[System.AttributeUsage(System.AttributeTargets.Class |
System.AttributeTargets.Struct,
AllowMultiple = true) // Multiuse attribute.
]
public class AuthorAttribute : System.Attribute
{
string Name;
public double Version;
public AuthorAttribute(string name)
{
Name = name;
// Default value.
Version = 1.0;
}
public string GetName() => Name;
}
Im folgenden Codebeispiel werden mehrere Attribute desselben Typs auf eine Klasse angewendet.
[Author("P. Ackerman"), Author("R. Koch", Version = 2.0)]
public class ThirdClass
{
// ...
}