跟随文章:http://www.udidahan.com/2009/06/14/domain-events-salvation/,我们可以看到DomainEvents实现使用了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>>()外部化/抽象化?(在我之前的经验中,我把所有的DI-related东西都放到了global.asax.cs中)。
从技术上讲,我只熟悉Ninject容器,但可能会理解这个概念,所以非常感谢您的建议/插图。
谢谢!
发布于 2012-05-04 17:40:55
不不用了。我会使DomainEvents及其方法成为非静态的,并使用容器来创建它。一个像样的容器将创建和初始化句柄及其依赖关系,并允许您在不引用容器的情况下调用事件处理程序。
唯一的问题是事件处理程序的注册。为此,我使用Bootstrapper调用IUnityRegistration的实例并配置UNITY。我开始使用CommonServiceLocator来减少依赖。甚至在最近,我切换到MEF来一起去掉注册类。
https://stackoverflow.com/questions/10444646
复制相似问题