我有个习惯,把 logger 传递给构造函数,比如:
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 的单例模式会有什么不好的地方,这样每个人都知道从哪里获取 logger:
Infrastructure.Logger.Info("blabla");
更新: 正如 Merlyn 正确地注意到的,我应该提到,在第一个和第二个示例中,我使用 DI。