如何从MSDN教程重构IDependencyResolver

时间:2012-02-06 20:22:11

标签: asp.net-mvc-3 dependency-injection unity-container

msdn(source)的教程建议使用IDependencyResolver:

 IDependencyResolver resolver = DependencyResolver.Current;
 IDependencyResolver newResolver = new UnityDependencyResolver(container, resolver);
 DependencyResolver.SetResolver(newResolver);

我的印象是IDependencyResolver没有正确管理对象生命周期,因为它缺少一个发布方法,而且在概念上也是一个服务定位器反模式(source)。

我怎么能重构this tutorial不使用IDependencyResolver?

1 个答案:

答案 0 :(得分:2)

使用Unity.Mvc3,有一个HierarchicalLifetimeManager,可以管理实现IDispoable的对象的生命周期。

如果你只在这里的组合根处解决它不是反模式,基本上MVC是通过控制器中的构造函数注入。

http://blog.ploeh.dk/2011/07/28/CompositionRoot.aspx

请注意,这不一定是您创建的自定义控制器工厂,unity会自动为您注入。在这里查看我的代码: http://completedevelopment.blogspot.com/2011/12/using-dependency-injection-with-mvc.html