Caller Information: Debug sem Visual Studio - Revista .net Magazine 100
Neste artigo veremos um conjunto de classes chamado Caller Information que é utilizado para obter informações sobre o código que está sendo executado.
Neste artigo veremos um conjunto de classes chamado Caller Information que é utilizado para obter informações sobre o código que está sendo executado. Dentre as informações disponibilizadas pela Caller Information está o nome do método que fez a chamada, o nome do seu arquivo no projeto e a linha de código.
Em que situação o tema é útil
O Caller Information é utilizado no cenário em que se deseja rastrear a execução do programa e não se dispõe do Visual Studio instalado, por exemplo, em um ambiente de produção. Desta forma, é possível ter detalhes sobre a execução do programa, que serão úteis na resolução de problemas.
Debug sem Visual Studio
No .Net Framework 4.5 e o C# 5.0 foi acrescentado um conjunto de classes chamado Caller Information cujo objetivo é obter informações durante o runtime, sem a necessidade de utilizar ferramentas externas ou uso de breakpoint, como por exemplo, o Visual Studio.
As classes que compõem a Caller Infomation são: CallerMemberNameAtributte, CallerFilePathAttribute e CallerLineNumberAttribute e estão localizadas na biblioteca System.Runtime.CompilerServices. A seguir será descrito cada uma delas.
1. CallerMemberNameAttribute: Armazena o nome do método que fez a chamada para o método no qual este objeto está sendo usado como argumento.
2. CallerFilePathAttribute: Retorna o caminho completo do arquivo correspondente a classe onde o método que fez o chamado para o método atual está localizado.
3. CallerLineNumberAttribute: Armazena a linha de código do método que fez o chamado ao método atual dentro do código.
Estes elementos devem ser usados como atributos e argumentos opcionais de métodos onde se deseja recuperar estes dados. Deve-se obrigatoriamente (como ocorre em argumentos opcionais) passar valores default para estes parâmetros, conforme exposto na Listagem 1.
Listagem 1. Exemplo de utilização de CallerMemberName, CallerFilePath e CallerLineNumber
1 private Dictionary<string, int> Sort(Dictionary<string, int> dic,
2 [CallerMemberName] string memberName = "",
3 [CallerFilePath] string sourceFilePath = "",
4 [CallerLineNumber] int lineNumber = 0)
5 {
6
7 }
Embora no exemplo (e no projeto desenvolvido mais à frente) tenham sido usados todos os atributos, você não precisa usar todos ao mesmo tempo. Além disto, é possível também passar valores na chamada do método.
Se forem omitidos valores na chamada do método, estes irão capturar o nome do método, o nome do arquivo e a linha para o método atual, caso contrário, os valores usados são os que você informar nestes atributos.
Tanto a documentação como os exemplos existentes para este recurso ainda são poucos, uma vez que não foi feito ainda oficialmente o lançamento da nova versão do Visual Studio, logo, pode ser que haja mudanças." [...] continue lendo...
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo