Compilação Condicional em C#
Não sei se todos já utilizaram as famosas diretivas de compilação em C#, como por exemplo #define, #ifdef, #undef, etc...
Estes são mecanismos realmente muito interessante que podem eliminar partes do código durante a compilação, por exemplo, você tem um método que deseja ser executado somente no ambiente de desenvolvimento e não no ambiente de produção.
No exemplo abaixo, eu mostro como fazer isto usando uma diretiva condicional no método, aliado a uma declaração #ifdef:
-- definição do método
[System.Diagnostics.Conditional("DEBUG")]void ExecutaSomenteEmDebug(){ MessageBox.Show("Em Debug");
}
-- chamando o método
private void Form1_Load(object sender, EventArgs e){ ExecutaSomenteEmDebug();}
No exemplo acima, a diretiva Conditional("DEBUG") informa ao compilador que este médodo só "existirá" em modo debug, ou seja, quando você compilar em modo release, todas as chamadas ao método serão ignoradas.
A vantagem deste modelo é que você pode criar rotina de LOG, por exemplo, somente para o desenvolvimento, e quando for disponbilizar a aplicação para o ambiente de produção, não precisará modificar nada no código.
Outra maneira de utilização um pouco mais abrangente, é você criar suas próprias diretivas de compiliação, por exemplo:
-- definição do método
[System.Diagnostics.Conditional("CONDICAO_XYZ")]
void ExecutaCondicional()
{
MessageBox.Show("Condição XYZ");
}
Neste caso este método só será chamado caso exista uma diretiva CONDICAO_XYZ no início do código fonte ou nas opções de compilação, por exemplo:
#define CONDICAO_XYZ
using System;
...
...
No exemplo acima, se você comentar a linha do #define, o compilador também irá ignorar o método e as chamadas.
Isto é apenas uma pequena amostra do que pode ser feito com diretivas de compilação, espero ter despertado o interesse de vocês e principalmente espero que a dica seja útil.
[]s,
Carlos.