Muitas vezes no desenvolvimento de aplicações é necessário condicionar o uso de determinadas rotinas a um cenário específico. Existem sistemas que mudam completamente o comportamento, de forma controlada, dado o contexto de seu uso. Há muitas formas para se fazer isso. Uma delas é um recurso bastante interessante chamado de "Atributo condicional". Este artigo abordará seu uso. Inicialmente, veja o exemplo abaixo:
#define TRACE_ON
using
System;
System.Diagnostics;
public
class
Trace
{
[Conditional(
"TRACE_ON"
)]
static
void
Msg(
string
msg)
Console.WriteLine(msg);
}
ProgramClass
Main()
Trace.Msg(
"Now in Main..."
);
Console.WriteLine(
"Done."
No exemplo acima pode-se perceber dois elementos no fonte: #define TRACE_ON e um atribute [Conditional("TRACE_ON")] sob o método Msg. Dada a presença deste attribute a mensagem é exebida.
Existem alguns atributos condicionais padrões. Um exemplo é o Conditional DEBUG. Este identificador serve para ativar o rastreamento de compilações de depuração. Veja o exemplo abaixo:
"DEBUG"
DebugMethod()
Com este recurso percebe-se que um método marcado como condicional passa por um pré-processamento especificando se sua chamada é incluída ou omitida.
Fernando Lugão Veltem edited Revision 2. Comment: alterado titulo e tags, adicionado pt-BR. O artigo foi criado no Wiki en-US por isso a alteração é necessária
belo tutorial, bom para quem esta começando