Я создаю приложение ASP .Net MVC 2 и хочу следовать идеям из книги Марка Симанна » Внедрение зависимостей в .Net ", поэтому я зарегистрировал свою настраиваемую фабрику контроллеров в файле Global.asax, и я настраиваю контейнер в фабрике контроллеров следующим образом:
public IController CreateController(RequestContext context, Type controllerType)
{
var container = new Container();
object controller;
if(controllerType == typeof(MyControllerOne)
{
container.Configure(r => r.
For<IService>().
Use<ServiceOne>());
}
else if(controllerType == typeof(MyControllerTwo)
{
container.Configure(r => r.
For<IService>().
Use<ServiceTwo>());
}
......
return container.GetInstance(controllerType) as IController;
}
Теперь этот код работает (хотя, возможно, у меня где-то есть ошибка, поскольку я пишу это по памяти), зависимости устраняются и каждый раз создается экземпляр правильного контроллера с правильной зависимостью, но кажется, что для каждого запроса контейнер настраивается для разрешения зависимостей, которые потребуются в данный момент. Итак, мои вопросы:
Мы будем очень благодарны за любые комментарии, идеи и / или предложения.
Между прочим, контейнер IoC, который я использую, - это StructureMap, хотя я думаю, что для этого конкретного вопроса он может быть не слишком актуальным.