Tag: 交叉关注点

记录为装饰器与dependency injection – 如果我需要在类中登录,该怎么办?

(我最初在这篇评论中提到了这个问题,但Mark Seemann要求我创建一个新问题。) 我正在开始一个新的应用程序(.NET Core,如果这很重要),现在我正在尝试决定如何准确地进行日志记录。 普遍的共识似乎是日志记录是一个跨领域的问题,因此记录器不应该直接注入应该记录的类。 通常,有一个例如下面的类如何不这样做: public class BadExample : IExample { private readonly ILogger logger; public BadExample(ILogger logger) { this.logger = logger; } public void DoStuff() { try { // do the important stuff here } catch (Exception e) { this.logger.Error(e.ToString()); } } } 相反,具有业务逻辑的类不应该知道记录器( SRP ),并且应该有一个单独的类来执行日志记录: public class BetterExample : IExample { public […]