我正在使用依赖注入(inject)实现一个 MVC 站点。我有可能遇到错误的 View 模型。我们认为将这些错误反馈给相关 Controller 的最佳方式是抛出一些自定义异常。
我的问题:我想从一个公共(public)基类派生这些异常,该基类会将有关发生的错误的信息写入日志。但是由于我们使用的是 DI,我们的日志记录对象是由我们的 IoC 容器构建和控制的。迄今为止,我们所有需要日志记录的对象都已由 IoC 容器构建和初始化。但是这些异常将在运行中创建。
处理此问题的最常见方法是什么?我可以看到如何创建一个 ExceptionFactory 类,将记录器注入(inject)其中,然后将其注入(inject) View 模型。但这似乎不太像 IoC。
是否有处理这种情况的常用习语?
最佳答案
我会避免让您的异常对象与记录器耦合。我可以看到一个异常对象知道如何格式化它的异常消息,但不记录它。
在相关的上游捕获异常并将其记录在那里。如果你的 IoC 容器支持它,你可以使用拦截来捕获和记录异常。我会提供一些链接,但您最好只使用 Google IoC 和拦截,并根据您选择的框架决定您需要什么。
仅需 0.02 美元,希望对您有所帮助。
关于c# - 注入(inject)异常类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19644888/