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

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

Ответы [ 4 ]

2 голосов
/ 02 мая 2009

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

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

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

1 голос
/ 02 мая 2009

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

1 голос
/ 02 мая 2009

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

0 голосов
/ 02 мая 2009

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

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

...