Existe-t-il un moyen d'attribuer des méthodes conditionnelles ou d'ajouter des directives de préprocesseur au moment de l'exécution en C #?

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

Question

L'objectif est de pouvoir activer les appels de débogage au moment de l'exécution à partir de la base de données sur une version de production ...

Était-ce utile?

La solution

Non; le point essentiel des méthodes conditionnelles et des directives de préprocesseur est qu'elles obligent le compilateur à omettre le code de l'exécutable final. L'équivalent à l'exécution de ces opérations est une instruction if .

Cependant, la programmation orientée aspect est à peu près équivalente à ce que vous demandez, en ce sens qu'elle vous permet d'injecter du code dans un programme en cours d'exécution qui n'existerait pas autrement.

Modifier: , comme l'a mentionné Joe, la solution consiste à programmer sur un cadre de journalisation tel que log4net, qui permet un contrôle précis de ce qui est consigné.

Autres conseils

Pas au niveau du pré-processeur. Après tout, vous exécutez le résultat de ce processus. Bien sûr, vous pouvez modifier vos contrôles de préprocesseur pour qu'ils soient des contrôles de code normaux, qui peuvent évidemment être modifiés en fonction des besoins.

Non, mais la plupart des sous-systèmes de journalisation offrent cette possibilité. Par exemple. avec log4net, vous pouvez modifier le niveau de journalisation de manière dynamique ou, si vous utilisez System.Diagnostics.Trace, vous pouvez modifier le TraceSwitch de manière dynamique.

Vous ne pouvez évidemment pas affecter le code binaire en tant que tel (comme avec l'instruction #if).

Habituellement, je m'assure que mon code contient beaucoup de journalisation, activée par commutateurs de trace . De cette façon, vous pouvez avoir un système en production avec peu ou pas de journalisation. Lorsque vous souhaitez rechercher un problème, vous pouvez activer la journalisation en modifiant le fichier de configuration.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top