Einführung in C#-Attribute

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, etcArrays 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 GetCustomAttributesUnd 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.

Supongo que te gusta

Origin blog.csdn.net/echozly/article/details/122288573
Recomendado
Clasificación