1. Übersicht
Attribute sind im Wesentlichen ein Mittel, um zusätzliche Informationen zu Code hinzuzufügen, und sie können auf Klassen, Strukturen, Methoden, Konstruktoren und mehr angewendet werden. In C# sind Attribute Klassen, die Attribute
von einer Basisklasse . Alle geerbten Attribute
Klassen können verwendet werden, um dem Code zusätzliche Informationen hinzuzufügen.
2. Eigenschaften verwenden
Beispielsweise gibt es eine ObsoleteAttribute
Eigenschaft namens . Es wird verwendet, um anzuzeigen, dass der Code veraltet ist und nicht mehr verwendet wird. Dieses Attribut kann mit eckigen Klammern auf die eine oder andere Klasse angewendet werden.
[Obsolete]
public class TestClass
{
}
Obwohl der Name dieser Attributklasse lautet ObsoleteAttribute
, muss er nur im Code verwendet werden Obsolete
. Dies ist eine Konvention von C#. Obwohl auch der vollständige Name verwendet werden kann ObsoleteAttribute
.
Das Markieren einer Klasse als obsolet kann auch einige zusätzliche Erläuterungen hinzufügen, indem ein Parameter an das Obsolete-Attribut übergeben wird, nur bool, int, double, string, Type, enums, etc
Arrays dieser Typen können übergeben werden. Ausdrücke oder Variablen können nicht verwendet werden.
[Obsolete("TestClass已经过时,请使用NewTestClass")]
public class TestClass
{
}
3. Benutzerdefinierte Funktionen
Benutzerdefinierte Attribute müssen nur eine Klasse die Attribute-Klasse erben lassen und das Namenssuffix ist das Ende von Attribute.
class MsgAttribute : Attribute
{
private string msg;
public MyAttribute(string msg)
{
this.msg = msg;
}
public void ShowMsg()
{
Console.WriteLine(msg);
}
}
[Msg("这是一条信息")]
class MyClass
{
}
4. Lesen Sie die Funktionsinformationen
Eigenschaften werden nur zur Identifizierung verwendet. Eigenschaften sind ohne die Hilfe einer äußeren Kraft wirklich nutzlos.
Um Attribute zu verwenden, müssen Sie normalerweise Reflektion verwenden. Beispielsweise können Sie Reflektion verwenden, um Informationen über eine Klasse abzurufen.
TypeInfo typeInfo = typeof(MyClass).GetTypeInfo();//获取类型信息
MsgAttribute customAttribute = typeInfo.GetCustomAttribute<MsgAttribute>(); //获取特性信息,返回特性的实例对象
customAttribute.GetName();//调用方法 控制台中输出 这是一条信息
Die generische GetCustomAttribute<T>-Methode wird verwendet, um ein bestimmtes Feature abzurufen, gibt die Featureinstanz zurück, und es gibt eine GetCustomAttributes()-Methode, um alle Features abzurufen.
Attribute werden nur instanziiert, wenn sie verwendet werden GetCustomAttribute
oder GetCustomAttributes
Und jeder Aufruf wird eine andere Attributinstanz neu instanziieren und zurückgeben.
5. Zusammenfassung
Attribute können deklarative Fähigkeiten bereitstellen, aber sie sind Code in Form von Metadaten und führen selbst keine Operationen aus.