Код: Выделить всё
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.
}
}
}
Но все выражения в методах Logger.LogActivity по-прежнему оцениваются (например, ..serialize object.. в предыдущем примере), и это замедляет работу моего приложения.
Я мог бы использовать такие операторы журнала:< /p>
Код: Выделить всё
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..);
Можно ли так изменить класс Logger что при отключении ведения журнала (или изменении уровня журнала) выражения в вызовах LogActivity(...) не оцениваются?
Есть ли какой-либо шаблон для этого в С#?
Подробнее здесь: https://stackoverflow.com/questions/111 ... thod-calls
Мобильная версия