segunda-feira, 27 de janeiro de 2025

Uso de Atributos e Reflexão em C#

Atributos e reflexão são ferramentas poderosas no C# que permitem adicionar flexibilidade e metadados ao seu código.

O que são atributos?
Atributos são "anotações" que podem ser adicionadas ao código para fornecer informações adicionais. Eles não alteram diretamente a execução do programa, mas são usados em tempo de compilação ou execução para definir comportamentos específicos.

Por exemplo, o atributo [Obsolete] pode ser aplicado a métodos para indicar que eles estão obsoletos:

[Obsolete("Este método será removido em versões futuras.")]
public void MetodoAntigo()
{
    Console.WriteLine("Método antigo.");
}

O que é reflexão?
Reflexão é uma funcionalidade que permite ao programa inspecionar e interagir com seus próprios elementos em tempo de execução. Ela é útil para acessar atributos, métodos, propriedades e outras informações de classes, mesmo que não se tenha conhecimento prévio sobre elas.

Um exemplo simples seria obter os atributos aplicados a um método:

using System;
using System.Reflection;

public class Exemplo
{
    [Obsolete("Este método será removido.")]
    public void MetodoAntigo() { }

    public static void Main()
    {
        Type tipo = typeof(Exemplo);
        MethodInfo metodo = tipo.GetMethod("MetodoAntigo");
        object[] atributos = metodo.GetCustomAttributes(false);

        foreach (var atributo in atributos)
        {
            Console.WriteLine($"Atributo encontrado: {atributo}");
        }
    }
}

Quando usar?
Atributos e reflexão são úteis em cenários como:

  • Validação de dados com base em regras definidas.
  • Serialização e desserialização de objetos.
  • Injeção de dependências e configuração dinâmica.
  • Criação de frameworks ou bibliotecas que precisam acessar elementos do código em tempo de execução.

O uso eficiente dessas ferramentas pode trazer flexibilidade ao seu projeto, mas é importante usá-las com cuidado, pois o uso excessivo de reflexão pode impactar o desempenho.

Nenhum comentário:

Postar um comentário