Atributo condicional

Definição - o que significa atributo condicional?

Um atributo condicional é uma tag usada para marcar um método ou classe cuja execução depende da definição do identificador de pré-processamento.

Um atributo condicional indica uma condição para especificar a compilação condicional em que os métodos são chamados seletivamente com base na definição de símbolos. Ele instrui o compilador a compilar (em Microsoft Intermediate Language) ou não compilar blocos de código específicos, com base em uma condição - se um símbolo de compilação condicional específico está definido ou não. Se símbolos específicos não foram definidos no instante em que são chamados, as chamadas para esse método ou classe serão ignoradas pelo compilador.

Definirtec explica o atributo condicional

Um atributo condicional tem as seguintes características:

  • Pode ser aplicado a métodos e classes, mas somente se forem derivados de um atributo.
  • Ao aplicar o atributo condicional a uma classe, a classe de atributo será emitida para metadados apenas se o símbolo de compilação condicional for definido.
  • Leva um parâmetro, que é o símbolo identificador que controla a compilação.
  • Os argumentos passados ​​para um método condicional ou classe de atributo serão verificados por tipo pelo compilador.
  • É totalmente cuidado pelo compilador e não pelo tempo de execução.
  • Não pode ser aplicado a um método usado em uma expressão de criação de delegado.
  • Isso não afeta o código gerado para o método condicional, mas afeta a chamada para o método.

Um atributo condicional fornece um padrão de programação declarativo e ajuda a manter facilmente o código-fonte. Ao aplicar um atributo condicional no nível do método, o código-fonte fica mais legível. O chamador de um método não precisa de código adicional para compilação condicional. Um atributo condicional é usado para habilitar funcionalidades de rastreamento e registro em compilações de depuração usando o identificador DEBUG para exibir e registrar informações de diagnóstico relacionadas ao aplicativo. Além disso, ajuda a separar a lógica relacionada à compilação de depuração (em sistemas usados ​​para desenvolvimento) das compilações de lançamento, que são implantadas em sites e aplicativos. Para manter várias edições (com recursos selecionados em alguma edição) de um software sem duplicação de código, a compilação condicional forma a técnica correta pela qual o único código-fonte principal é mantido para várias edições com base nos respectivos símbolos definidos para eles.

A seguir estão algumas regras a serem seguidas ao usar um atributo condicional:

  • Um método condicional dentro de uma declaração de classe ou estrutura deve ter um tipo de retorno como void.
  • Ao usar vários identificadores como atributos condicionais, a inclusão de método (s) é baseada no resultado de OR lógico ou AND lógico nos símbolos definidos.
  • Não pode ser especificado em um método em uma declaração de interface.
  • Um método condicional não pode ser precedido da palavra-chave "override", mas pode ser virtual. Se substituído, é considerado uma condicional implicitamente.
  • Os símbolos considerados para compilação condicional podem ser definidos como opções de linha de comando do compilador ou como variáveis ​​de ambiente do shell do sistema operacional ou como pragmas (usando a diretiva de pré-processador "#define") no código-fonte.
  • Ao contrário do C ++, a definição de símbolos em C # pode estar em qualquer ordem e, portanto, a ordem entre "#define" e um método condicional deve ser definida corretamente.

Embora o uso de "#if e #endif" forme uma opção alternativa ao atributo condicional, o último fornece uma abordagem mais limpa, elegante e menos sujeita a erros em comparação com o anterior. Internamente, a diferença é que, ao usar um atributo condicional para um método, o método ainda fará parte da montagem e não será carregado. Mas no caso de #if / #endif, o método não será visível na própria montagem.

Esta definição foi escrita no contexto de C #