Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Saját egyéni attribútumokat úgy hozhat létre, hogy definiál egy attribútumosztályt, egy közvetlenül vagy közvetve származó Attributeosztályt, amely gyors és egyszerűvé teszi az attribútumdefiníciók azonosítását a metaadatokban. Tegyük fel, hogy a típust író programozó nevével szeretné címkézni a típust. Egyéni Author attribútumosztályt is definiálhat:
[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";
}
}
Az osztály neve AuthorAttribute az attribútum neve, Authorplusz az Attribute utótag. A System.Attribute-ből származik, tehát ez egy egyéni attribútumosztály. A konstruktor paraméterei az egyéni attribútum pozícióparaméterei. Ebben a példában name egy pozícióparaméter látható. A nyilvános írási-olvasási mezők vagy tulajdonságok nevesített paraméterek. Ebben az esetben version az egyetlen elnevezett paraméter. Figyelje meg az AttributeUsage attribútum használatát, hogy az attribútum csak osztályon Author és struct deklarációkon érvényes legyen.
Ezt az új attribútumot a következőképpen használhatja:
[Author("P. Ackerman", Version = "1.1")]
class SampleClass
{
// P. Ackerman's code goes here...
}
AttributeUsage egy elnevezett paraméterrel rendelkezik, AllowMultipleamellyel egyéni attribútumokat hozhat létre egyszerhasználatos vagy többfelhasználóssá. A következő kód példában egy többfelhasználós attribútum jön létre.
[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;
}
Az alábbi kód példában több azonos típusú attribútumot alkalmazunk egy osztályra.
[Author("P. Ackerman"), Author("R. Koch", Version = "2.0")]
public class ThirdClass
{
// ...
}