Как отключить оценку параметров в методеC#

Место общения программистов C#
Ответить
Anonymous
 Как отключить оценку параметров в методе

Сообщение Anonymous »

Не смог вспомнить лучшее название, не стесняйтесь изменить его на что-нибудь лучшее :)

Мое приложение содержит множество операторов журналирования, что-то вроде этого: р>

Код: Выделить всё

var logger = new Logger(/*..get flag from settings if the logger should be active..*/);
// ....
logger.LogActivity(..serialize an object..);
//...
logger.LogActivity(..get another object's expensive overriden ToString method..);
//...
logger.LogActivity(..log something new..);
Класс регистратора:

Код: Выделить всё

public class Logger
{
private readonly bool _isActive;

public Logger(bool isActive)
{
_isActive = isActive;
}

public void LogActivity(string activity)
{
if (_isActive)
{
// Save activity to Database.
}
}
}
Когда я отключаю регистратор в настройках (поэтому поле _isActive в классе Logger имеет значение false), в базу данных ничего не сохраняется. Но все выражения в методах Logger.LogActivity по-прежнему оцениваются (например, ..serialize object.. в предыдущем примере), и это замедляет работу моего приложения.
Я мог бы использовать такие операторы журнала:

Код: Выделить всё

var logger = new Logger(/*..get flag from settings if the logger should be active..*/);
// ....
if (loggerIsActive) logger.LogActivity(..serialize an object..);
//...
if (loggerIsActive) logger.LogActivity(..get another object's expensive overriden ToString method..);
//...
if (loggerIsActive) logger.LogActivity(..log something new..);
Но гораздо лучше было бы изменить только метод LogActivity... Можно ли как-то изменить только метод LogActivity, чтобы в случае отключения логгера выражения в вызове LogActivity не оцениваются? Что ж, я был бы удивлён, если это возможно на C#, но есть ли другой способ/шаблон сделать это?

Подробнее здесь: https://stackoverflow.com/questions/111 ... n-a-method
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»