c# - 注入(inject)异常类

标签 c# exception dependency-injection inversion-of-control

我正在使用依赖注入(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/

相关文章:

c# - View 更改后自动 INotifyPropertyChanged

java - 如何在 Eclipse 中为可选 Java 异常生成代码

java - 为什么在某些事件中调用 getLayoutParams() 会抛出异常?例如,onSaveInstanceState

java - 如何将类列表作为参数传递?

dependency-injection - Aurelia & Typescript 注入(inject)和继承

asp.net - 线程安全和 MEF 目录

c# - Azure.Data.Tables 仅查询下一条记录(限制/取 1?)

c# - WPF C# 将音频文件复制到剪贴板

c# - 微软Azure : How to create sub directory in a blob container

javascript - 如何使用 Angular 8 中的注入(inject)器注入(inject)使用注入(inject) token 的服务