Typ*_*son 15 autofac asp.net-mvc-3
我使用Autofac与ASP.NET MVC集成,我的所有控制器都接收依赖项,Autofac自动解析嵌套依赖项.太棒了
但是,如何解决控制器实例化范围之外的依赖关系?在我的代码深处的某些地方,我需要向解析器询问我的Logger.一方面将Logger作为依赖项传递给我创建的每个小对象似乎是错误的,另一方面,依赖于我的代码中的依赖性解析器似乎是错误的
例如,我有一个名为Result的类,它从许多动作返回.它是一个一致的使用对象,我的应用程序代码可以依赖从更深层回来.当更深层次的代码向此对象添加UI错误时,我想自动将其添加到需要解析的记录器中.每个班级都依赖于记录器会妨碍你
任何帮助表示感谢
Nic*_*rdt 37
你正在寻找的是MVC DependencyResolver.Current:
var logger = DependencyResolver.Current.GetService<ILogger>();
Run Code Online (Sandbox Code Playgroud)
那么你可以使用事件(发布/子方法),如果每个对象的依赖都会激怒你,但我不认为依赖中央Logger解析器有什么问题.如果你真的需要从每个类登录,那么你肯定可以将日志记录作为应用程序的核心方面,并且你在心理上将其视为其他常见的库类型,如String或Ints,这些类型无处不在,可以安全依赖.但我会建议你别的东西.恕我直言,你应该建立架构,不要登录每个班级.如果您的日志记录仅仅(或大部分)是关于编写错误(例外),那么不要使用它来对您的域模型进行策略.让我们把它放在服务层insteád.这种编排层可以正确地评估每个捕获的异常并仅记录必要的内容.让我们将这些异常冒充到堆栈跟踪中较低的可能位置,并将它们作为最后一件事来处理.
| 归档时间: |
|
| 查看次数: |
13644 次 |
| 最近记录: |