我已经阅读了很多关于这方面的信息,但我找不到任何最新的(截至2011年1月)关于现在应该如何完成这一点的信息。我读过几篇很好的帖子,它们似乎有答案,但没有细节。较早的pre-unity-2方法大多创建自定义生命周期管理器。现在看起来最好的方法是使用use a child container that is created at the beginning of the request and disposed at the end of the request, using container-managed lifetime。另一个人说,他们已经使用hierarchical lifetime with createchildcontainer实现了这一点。
我找到的大多数材料都说要在Application_BeginRequest期间创建子容器,我已经尝试过了。这不起作用,因为我的控制器工厂(来自MvcContrib的IoCControllerFactory)使用在Application_Start (MvcContrib中的IDependencyResolver的实现)期间注册的容器,它是默认的/根容器。
我在web.config中设置了unity,并且我可以创建子容器,但是我似乎不能让任何控制器使用它们来为DI创建每个请求的单例。我是否需要创建一个特殊的容器来在控制器工厂中使用,而不是根?它应该是容器管理的还是分层的?我不应该在每次请求时都重新设置DependencyResolver,对吗?
发布于 2011-01-18 17:50:47
尝试使用http://mvcunity.codeplex.com/或下载源代码,看看它是如何完成的。
https://stackoverflow.com/questions/4722433
复制相似问题