У меня была привычка передавать регистратор в конструктор, например:
public class OrderService : IOrderService {
public OrderService(ILogger logger) {
}
}
Но это довольно раздражает, поэтому я использовал это свойство в течение некоторого времени:
private ILogger logger = NullLogger.Instance;
public ILogger Logger
{
get { return logger; }
set { logger = value; }
}
Это тоже раздражает - это не сухо, мне нужно повторить это в каждом классе. Я мог бы использовать базовый класс, но опять же - я использую класс Form, поэтому понадобится FormBase и т.д. Поэтому я думаю, что было бы недостатком синглтона с выставленным ILogger, поэтому кто-то знал бы, где взять регистратор:
Infrastructure.Logger.Info("blabla");
UPDATE: Как правильно заметил Мерлин, я должен упомянуть, что в первом и втором примерах я использую DI.