我试图让自己熟悉,MVC3
但autofac
我遇到了我无法解决的小问题。
我正在使用autofac
集成MVC3
并且一切正常,页面加载正确,依赖项被注入,这很酷。困扰我的是如何在类库项目中使用autofac
'sContainer
或MVC
's 。
我正在尝试创建静态类来帮助我处理域事件。我只是希望能够使用事件参数调用该方法,并且一切都应该由此类处理。这是代码:DependencyResover
public static IContainer Container { get; set; }
public static void Raise<T>(T e) where T : IDomainEvent
{
foreach (var eventHandler in DomainEventManager.Container.Resolve<IEnumerable<EventHandlers.Handles<T>>>())
{
eventHandler.Handle(e);
}
}
如您所见,它非常简单,如果不MVC
接近,一切都会很好。我的一些依赖项注册为InstancePerHttpRequest
( NHibernate
' session),而其他依赖项注册为InstancePerDependency
or SingleInstance
。因此,当我尝试container
在我的 UI 项目中使用 created 时,我得到了没有httpRequest
可用标签的异常。
我如何重用Container
在 web 项目中创建的来访问它的所有功能,包括InstancePerHttpRequest
和httpRequest
标签?
或者也许我的问题还有其他解决方案?我正在考虑使用委托函数来获取事件处理程序,但我不能(可以吗?)创建我不需要在分配时使用具体类型初始化的通用委托。
为什么我想使用静态类来做到这一点基本上是每个entity
和aggregate
或service
需要能够引发域事件。注入EventManager
其中的每一个都会很麻烦,而静态类正是解决我所有问题的方法。
如果有人能帮助我解决这个问题,我将不胜感激。
干杯,帕科