Есть ли способ назначить условные методы или добавить директивы предварительного процессора во время выполнения в C #?

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

Вопрос

Цель состоит в том , чтобы иметь возможность включать отладочные вызовы во время выполнения из базы данных при производственной сборке ...

Это было полезно?

Решение

НЕТ;смысл условных методов и директив препроцессора заключается в том, что они заставляют компилятор пропускать код из конечного исполняемого файла.Эквивалентом этого во время выполнения является if заявление.

Однако, аспектно-ориентированное программирование это примерно эквивалентно тому, что вы просите, поскольку позволяет вам вводить код в запущенную программу, которого в противном случае там бы не было.

Редактировать: как упоминал Джо, способ сделать это - запрограммировать систему ведения журнала, такую как log4net, которая позволяет осуществлять детальный контроль над тем, что регистрируется.

Другие советы

Не на уровне препроцессора. В конце концов, вы запускаете результат этого процесса. Конечно, вы можете изменить проверки препроцессора на обычные проверки кода, которые, очевидно, можно переключать по мере необходимости.

Нет, но большинство подсистем ведения журнала предоставляют такую возможность.Например.с помощью log4net вы можете изменять уровень ведения журнала динамически или при использовании System.Диагностика.Трассировка вы можете изменять Трассировочный переключатель уровень динамический.

Очевидно, что вы не можете повлиять на двоичный код как таковой (например, с помощью оператора #if).

Обычно я делаю так, чтобы в моем коде было много журналов, которые активируются с помощью переключатели трассировки . Таким образом, вы можете запустить систему в рабочем режиме практически без регистрации, а когда вы захотите исследовать какую-то проблему, вы можете включить вход в систему, изменив файл конфигурации.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top