Esiste un modo per assegnare metodi condizionali o aggiungere direttive preprosessor in fase di esecuzione in C #?

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

Domanda

L'obiettivo è quello di poter attivare le chiamate di debug in fase di esecuzione dal database su una build di produzione ...

È stato utile?

Soluzione

No; il punto dei metodi condizionali e delle direttive del preprocessore è che fanno sì che il compilatore ometta il codice dall'eseguibile finale. L'equivalente di runtime di questi è un'istruzione if .

Tuttavia, programmazione orientata all'aspetto è approssimativamente equivalente a quello che stai chiedendo, in quanto ti permette di iniettare codice in un programma in esecuzione che altrimenti non ci sarebbe.

Modifica: come ha detto Joe, il modo per farlo è programmare contro un framework di registrazione come log4net che consenta un controllo accurato su ciò che viene registrato.

Altri suggerimenti

Non a livello di pre-processore. Dopotutto, stai eseguendo il risultato di quel processo. Naturalmente, è possibile modificare i controlli pre-processore in normali controlli di codice, che possono ovviamente essere cambiati come richiesto.

No, ma la maggior parte dei sottosistemi di registrazione offre questa capacità. Per esempio. con log4net è possibile modificare il livello di registrazione in modo dinamico oppure, se si utilizza System.Diagnostics.Trace, è possibile modificare TraceSwitch livello in modo dinamico.

Ovviamente non puoi influenzare il codice binario in quanto tale (come con l'istruzione #if).

Quello che faccio di solito è assicurarmi che il mio codice contenga molte registrazioni, che è attivato da switch di traccia . In questo modo è possibile far funzionare un sistema in produzione con poca o nessuna registrazione e, quando si desidera ricercare qualche problema, è possibile passare alla registrazione modificando il file di configurazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top