msdn(source)的教程建议使用IDependencyResolver:
IDependencyResolver resolver = DependencyResolver.Current;
IDependencyResolver newResolver = new UnityDependencyResolver(container, resolver);
DependencyResolver.SetResolver(newResolver);
我的印象是IDependencyResolver没有正确管理对象生命周期,因为它缺少一个发布方法,而且在概念上也是一个服务定位器反模式(source)。
我怎么能重构this tutorial不使用IDependencyResolver?
答案 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