Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
U kunt uw eigen aangepaste kenmerken maken door een kenmerkklasse te definiëren, een klasse die direct of indirect is afgeleid van Attribute, waardoor het identificeren van kenmerkdefinities in metagegevens snel en eenvoudig is. Stel dat u typen wilt taggen met de naam van de programmeur die het type heeft geschreven. U kunt een aangepaste Author kenmerkklasse definiëren:
[System.AttributeUsage(System.AttributeTargets.Class |
System.AttributeTargets.Struct)
]
public class AuthorAttribute : System.Attribute
{
private string Name;
public string Version;
public AuthorAttribute(string name)
{
Name = name;
Version = "1.0";
}
}
De klassenaam AuthorAttribute is de naam van het kenmerk, Authorplus het Attribute achtervoegsel. Het is afgeleid van System.Attribute, dus het is een aangepaste kenmerkklasse. De parameters van de constructor zijn de positionele parameters van het aangepaste kenmerk. In dit voorbeeld name is dit een positionele parameter. Openbare velden of eigenschappen voor lezen/schrijven zijn benoemde parameters. In dit geval version is dit de enige benoemde parameter. Let op het gebruik van het AttributeUsage kenmerk om het Author kenmerk alleen geldig te maken voor klasse en struct declaraties.
U kunt dit nieuwe kenmerk als volgt gebruiken:
[Author("P. Ackerman", Version = "1.1")]
class SampleClass
{
// P. Ackerman's code goes here...
}
AttributeUsage heeft een benoemde parameter, AllowMultiplewaarmee u een aangepast kenmerk voor eenmalig gebruik of multiuse kunt maken. In het volgende codevoorbeeld wordt een multiuse-kenmerk gemaakt.
[System.AttributeUsage(System.AttributeTargets.Class |
System.AttributeTargets.Struct,
AllowMultiple = true) // Multiuse attribute.
]
public class AuthorAttribute : System.Attribute
{
string Name;
public string Version;
public AuthorAttribute(string name)
{
Name = name;
// Default value.
Version = "1.0";
}
public string GetName() => Name;
}
In het volgende codevoorbeeld worden meerdere kenmerken van hetzelfde type toegepast op een klasse.
[Author("P. Ackerman"), Author("R. Koch", Version = "2.0")]
public class ThirdClass
{
// ...
}