我习惯于将记录器传递给构造函数,例如:
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");
更新:正如 Merlyn 正确注意到的那样,我应该提到,在第一个和第二个示例中我使用的是 DI。
最佳答案
我在我的依赖注入(inject)容器中放置了一个记录器实例,然后将记录器注入(inject)到需要一个记录器的类中。
关于c# - 将记录器作为单例是一种好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8472678/