Olá a todos os leitores da DevMedia.

Neste  artigo veremos um exemplo de uso de Métodos Condicionais em C#. Essa técnica provê um poderoso mecanismo pelo qual as chamadas dos métodos podem ser incluídas ou omitidas. Essa técnica pode ser utilizada no caso de você querer que sua aplicação se comporte de maneiras diferentes em modo debug e release.

Vamos tomar como exemplo um programa que possui um método que captura alguns argumentos de uma linha de comando. Para testar esse método você precisa reiniciar o programa diversas vezes em diferentes cenários em modo Debug. Mas quando a aplicação for implantada você deseja ignorar esses testes.

Para utilizar essa técnica basta utilizar o atributo “Conditional” que se encontra em “System.Diagnostics”.

Nosso teste será bastante simples. Em um Console Application, na classe Program, criaremos um método estático que receberá uma string para escrever algo, somente em modo Debug. No método Main da classe Program, chamaremos esse método. Ainda dentro do método Main escreveremos na tela uma string , tanto em modo Debug e Release.


class Program
    {
        [Conditional("DEBUG")] // this method is only called in debug mode.
        public static void TestaMetodo(string trace)
        {
            Console.WriteLine("[TRACE] - " + trace);
        }       
        static void Main(string[] args)
        {
            Program.TestaMetodo("Essa linha só é escrita em Debug - Iniciando"); 
            Console.WriteLine("Escrevendo algo em modo release e debug."); 
            Program.TestaMetodo("Essa linha só é escrita em Debug - Finalizando");
            Console.ReadKey();
        }

    }

Quando o programa é rodado em modo Debug temos a seguinte tela:



Quando rodamos a aplicação em modo Release temos o seguinte resultado:




O uso do Atributo Condicional torna muito fácil a tarefa de depurar e implantar aplicações sem que seja necessário uma alteração de código para cada ambiente.

Espero que esse artigo tenha sido útil.

Obrigado e até a próxima.