Existe uma maneira de atribuir métodos condicionais ou adicionar directivas preprosessor em tempo de execução em C #?

StackOverflow https://stackoverflow.com/questions/814337

Pergunta

O objetivo é ser capaz de transferir as chamadas de depuração em em tempo de execução do banco de dados em uma compilação de produção ...

Foi útil?

Solução

Não; o ponto de métodos condicionais e directivas de pré-processamento é que eles causam o compilador código omitir da executável final. O equivalente de tempo de execução delas é uma declaração if.

No entanto, programação é aproximadamente equivalente ao que você está pedindo, na medida em que permite injetar código em um programa em execução que não seriam lá orientada a aspectos.

Editar:. como Joe mencionado, a maneira de fazer isso é para programa contra uma estrutura de log como log4net que permite o controle de grão fino sobre o que é registrado

Outras dicas

Não no nível pré-processador. Afinal, você está correndo o resultado desse processo. Claro, você pode mudar seus cheques pré-processador para ser código verifica normais, que podem obviamente ser comutadas conforme necessário.

Não, mas a maioria dos subsistemas de registro fornecer essa capacidade. Por exemplo. com log4net pode alterar o nível de registo de forma dinâmica, ou se estiver usando System.Diagnostics.Trace você pode alterar o TraceSwitch nível dinamicamente.

Você, obviamente, não pode afetar o código binário como tal (como com a declaração # if).

O que eu costumo fazer é ter certeza de que meu código contém uma grande quantidade de logging, que é ativado por trace muda . Dessa forma, você pode ter um sistema de execução em produção com pouco ou nenhum registro, e quando você quer pesquisar algum problema você pode alternar o log on, alterando o arquivo de configuração.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top