Já pensou se desse pra colar um post-it numa classe ou método dizendo pro compilador “ó, esse aqui é especial, trate diferente”?
Pois é, no C# isso existe e se chama atributo.
📌 O que são atributos?
São metadados que a gente cola em cima de classes, métodos ou propriedades.
Eles não mudam o código em si, mas dizem ao runtime ou a outras ferramentas como se comportar.
É tipo etiqueta de caixa na transportadora:
- “Frágil” → cuidado!
- “Este lado para cima” → não vire.
- “Urgente” → entregue já.
✨ Exemplos práticos
1. [Serializable]
Diz que a classe pode ser serializada (encaixotada em JSON, XML, etc).
[Serializable]
class Usuario
{
public string Nome { get; set; }
public int Idade { get; set; }
}
2. [Obsolete]
Aviso de “isso aqui tá ultrapassado, não use mais”.
Pode até gerar erro de compilação se você quiser.
[Obsolete("Use o método NovoMetodo em vez deste")]
public void MetodoVelho()
{
Console.WriteLine("Sou legado!");
}
3. [JsonPropertyName]
Customiza como o JSON vai serializar/deserializar uma propriedade.
using System.Text.Json.Serialization;
class Usuario
{
[JsonPropertyName("nome_completo")]
public string Nome { get; set; }
public int Idade { get; set; }
}
No JSON:
{"nome_completo":"Mandy","Idade":25}
🔧 Como funcionam?
Atributos são classes especiais que herdam de System.Attribute.
Quando você coloca [Obsolete] ou [Serializable], na prática está instanciando uma classe que o compilador sabe interpretar.
🚀 Conclusão
- NuGet trouxe as ferramentas.
- Serialização organizou a mala.
- Atributos são as etiquetas que mandam como tratar cada coisa.
👉 Juntos, esses três formam um kit essencial pra quem tá mergulhando de cabeça no .NET.