Introdução aos atributos C#

1. Visão Geral

Os atributos são essencialmente um meio de adicionar informações adicionais ao código e podem ser aplicados a classes, structs, métodos, construtores e muito mais. Em C#, atributos são classes que herdam Attribute de uma classe base . Todas as classes herdadas  Attribute podem ser usadas para adicionar informações adicionais ao código.

2. Use características

Por exemplo, há uma  ObsoleteAttribute propriedade chamada . É usado para indicar que o código está obsoleto e não é mais usado. Este atributo pode ser aplicado a uma classe ou outra usando colchetes.

[Obsolete]
public class TestClass
{
}

Embora o nome dessa classe de atributo seja  ObsoleteAttribute, ele só precisa ser usado no código  Obsolete. Esta é uma convenção de C#. Embora o nome completo também possa ser usado  ObsoleteAttribute.

Marcar uma classe como obsoleta também pode adicionar algum esclarecimento adicional ao passar um parâmetro para o atributo Obsoleto, somente bool, int, double, string, Type, enums, etcarrays desses tipos podem ser passados. Expressões ou variáveis ​​não podem ser usadas.

[Obsolete("TestClass已经过时,请使用NewTestClass")]
public class TestClass
{
}

3. Recursos personalizados

Atributos customizados só precisam deixar uma classe herdar a classe Attribute e o sufixo do nome é o final de Attribute.

class MsgAttribute : Attribute
{
    private string msg;
    public MyAttribute(string msg)
    {
        this.msg = msg;
    }
    public void ShowMsg()
    {
        Console.WriteLine(msg);
    }
}

[Msg("这是一条信息")]
class MyClass
{
}

4. Leia as informações do recurso

As propriedades são usadas apenas para identificação. Os traços são realmente inúteis sem a ajuda de alguma força externa.

Para usar atributos, você geralmente precisa usar reflexão. Por exemplo, você pode usar reflexão para obter informações sobre uma classe.

TypeInfo typeInfo = typeof(MyClass).GetTypeInfo();//获取类型信息
MsgAttribute customAttribute = typeInfo.GetCustomAttribute<MsgAttribute>(); //获取特性信息,返回特性的实例对象
customAttribute.GetName();//调用方法 控制台中输出 这是一条信息

O método genérico GetCustomAttribute<T> é usado para obter um recurso específico, retorna a instância do recurso e há um método GetCustomAttributes() para obter todos os recursos.

Os atributos  são instanciados apenas se forem usados GetCustomAttribute ​​ou GetCustomAttributesE cada chamada será reinstanciada e retornará uma instância de atributo diferente.

5. Resumo

Os atributos podem fornecer recursos declarativos, mas são códigos na forma de metadados e não executam operações por conta própria.

Acho que você gosta

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