在域层中集成 DI 容器.域事件
本文关键字:容器 事件 DI 集成 | 更新日期: 2023-09-27 18:33:04
在文章后面: http://www.udidahan.com/2009/06/14/domain-events-salvation/我们可以看到DomainEvents
implemantation 使用 DI 容器
public static IContainer Container { get; set; }
然后
if(Container != null) {
foreach(var handler in Container.ResolveAll<Handles<T>>()) handler.Handle(args);
}
我应该将 DI 容器集成到我存储域对象的同一程序集中,还是可以将Container.ResolveAll<Handles<T>>()
外部化/抽象化?(根据我以前的经验,我把所有的东西都放在global.asax.cs
里面DI-related
)。
从技术上讲,我只熟悉 Ninject DI 容器,但可能会理解这个概念,因此感谢您的建议/插图。
谢谢!
不,没有必要。我会使 DomainEvents 及其方法成为非静态的,并使用容器来创建它。一个体面的容器将创建和初始化句柄及其依赖项,并允许您调用事件处理程序而无需引用容器。
唯一的问题是事件处理程序的注册。为此,我使用引导程序来调用IUnityRegistration的实例并配置UNITY。我开始使用CommonServiceLocator来减少依赖性。甚至最近,我切换到 MEF 以摆脱所有注册类。