Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Du kan skapa egna anpassade attribut genom att definiera en attributklass, en klass som direkt eller indirekt härleds från Attribute, vilket gör det snabbt och enkelt att identifiera attributdefinitioner i metadata. Anta att du vill tagga typer med namnet på programmeraren som skrev typen. Du kan definiera en anpassad Author attributklass:
[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";
}
}
Klassnamnet AuthorAttribute är attributets namn, Author, plus suffixet Attribute . Den härleds från System.Attribute, så det är en anpassad attributklass. Konstruktorns parametrar är det anpassade attributets positionsparametrar. I det här exemplet name är en positionsparameter. Alla offentliga läs-och-skrivfält eller egenskaper kallas parametrar. I det här fallet version är den enda namngivna parametern. Observera användningen av attributet AttributeUsage för att göra attributet Author giltigt endast på klass- och struct deklarationer.
Du kan använda det här nya attributet på följande sätt:
[Author("P. Ackerman", Version = "1.1")]
class SampleClass
{
// P. Ackerman's code goes here...
}
AttributeUsage har en namngiven parameter, AllowMultiple, med vilken du kan skapa ett anpassat attribut för enkel användning eller multianvändning. I följande kodexempel skapas ett multiuse-attribut.
[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;
}
I följande kodexempel tillämpas flera attribut av samma typ på en klass.
[Author("P. Ackerman"), Author("R. Koch", Version = "2.0")]
public class ThirdClass
{
// ...
}