Как сделать рефакторинг IDependencyResolver из учебника по MSDN - PullRequest
1 голос
/ 07 февраля 2012

В учебнике по msdn ( source ) рекомендуется использовать IDependencyResolver:

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

У меня сложилось впечатление, что IDependencyResolver неправильно управляет временем жизни объекта, поскольку в нем отсутствует метод выпускаа также это концептуально анти-паттерн поиска сервисов ( source ).

Как я могу реорганизовать этот учебник , чтобы не использовать IDependencyResolver?

1 Ответ

2 голосов
/ 07 февраля 2012

Используйте 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

...