0

在文章之后:httpDomainEvents : //www.udidahan.com/2009/06/14/domain-events-salvation/ 我们可以看到实现使用DI容器

public static IContainer Container { get; set; }

进而

if(Container != null) {
    foreach(var handler in Container.ResolveAll<Handles<T>>()) handler.Handle(args);
}

我应该将 DI 容器集成到存储域对象的同一个程序集中,还是可以将 DI 容器外部化/抽象掉Container.ResolveAll<Handles<T>>()?(在我以前的经验中,我把所有的DI-related东西都放在里面global.asax.cs)。

从技术上讲,我只熟悉 Ninject DI 容器,但可能会理解这个概念,因此您的建议/插图将受到赞赏。

谢谢!

4

1 回答 1

2

不,没有必要。我将 DomainEvents 及其方法设为非静态并使用容器来创建它。一个体面的容器将创建和初始化句柄及其依赖项,并允许您调用事件处理程序而无需对容器进行任何引用。

唯一的问题是事件处理程序的注册。为此,我使用Bootstrapper调用 IUnityRegistration 的实例并配置 UNITY。我开始使用CommonServiceLocator来减少依赖。甚至最近,我改用 MEF 来完全摆脱注册课程。

于 2012-05-04T09:40:55.450 回答