Olá, Devs! Primeiramente, quero dizer que hoje vou compartilhar uma dica daquelas e trata-se dos atributos especiais do C#!!!
Pois bem, você sabia que no C# temos alguns atributos especiais que são poderosos quando queremos obter informações sobre quem chamou determinado método? Isso mesmo! Estou falando dos atributos CallerMemberName, CallerFilePath e CallerLineNumber.
Além disso, eles são muito úteis para cenários de rastreamento, depuração e geração de logs.
1. Então, vamos lá! Vem comigo que eu te explico:
– CallerMemberName
Primeiramente, sabe quando você quer saber o nome daquele método que chamou o seu? Pois é, esse atributo te dá essa resposta!
– CallerFilePath
Por outro lado, esse aqui é para os detalhistas! Ele te diz o caminho exato, a localização precisa do arquivo de origem que fez a chamada.
– CallerLineNumber
Agora, imagine se eu te dissesse que há um jeito de saber a linha específica no arquivo onde o chamador fez aquela ligação para o método? É isso que esse atributo faz!
O exemplo abaixo mostra isso, ou seja, o nome do chamador, o path do arquivo e o número da linha sendo gerados, pois passamos como parâmetros do método TraceMessage os atributos CallerMemberName, CallerFilePath e CallerLineNumber.
2. Seguindo em frente, vamos decifrar o código juntos?
1. Temos dois métodos: DoProcessing e TraceMessage.
2. O primeiro, DoProcessing, liga para o TraceMessage só para dizer: “An error happened“.
3. O TraceMessage é o nosso detetive. Via parâmetros ele está preparado não só para ouvir a mensagem, mas também para pegar três informações muito importantes que são: CallerMemberName, CallerFilePath e CallerLineNumber que pega o nome do método ou propriedade chamador, obtém o caminho completo do arquivo de origem do chamador e o número da linha do ponto onde o método foi chamado respectivamente.
E sabe o melhor? O C# faz isso automaticamente pra gente!
4. Finalmente, TraceMessage conta tudo o que descobriu usando o bom e velho Console.WriteLine.
Agora, um segredo entre nós: Não precisa se preocupar em fornecer esses detalhes ao chamar o método. É mágico! O próprio compilador cuida disso pra você. E fique tranquilo quanto à performance, porque isso acontece no momento da compilação, não quando seu código está rodando.
Portanto, meu conselho? Use e abuse desses atributos, especialmente quando estiver registrando informações. Eles te ajudam a saber exatamente de onde veio aquela mensagem ou erro, sem ter que fazer malabarismo pra descobrir.
E aí, o que acharam? Estão prontos para mergulhar ainda mais fundo no universo do C#?