Допустим, в моем проекте MVC 2 есть следующие классы и интерфейсы:
Хранилища:
IRepository1, IRepository2, IRepository3
public class ConcreteRepository1 : IRepository1
{
public ConcreteRepository1()
{
...
}
...
}
public class ConcreteRepository2 : IRepository2
{
public ConcreteRepository2()
{
...
}
...
}
public class ConcreteRepository3 : IRepository3
{
public ConcreteRepository3()
{
...
}
...
}
Классы обслуживания:
public class Service1
{
private IRepository1 repo1;
private IRepository2 repo2;
public Service1(IRepository1 repo1, IRepository2 repo2)
{
this.repo1 = repo1;
this.repo2 = repo2;
}
...
}
Контроллеры:
public class Controller1 : Controller
{
private Service1 srv1;
private Service2 srv2;
public Controller1(Service1 srv1, Service2 srv2)
{
this.srv1 = srv1;
this.srv2 = srv2;
}
...
}
У меня есть пользовательская ControllerFactory, и я знаю, как привязать конкретные репозитории к интерфейсам:
IUnityContainer container = new UnityContainer();
container.RegisterType<IRepository1, ConcreteRepository1>(new TransientLifetimeManager(), new InjectionConstructor());
container.RegisterType<IRepository2, ConcreteRepository2>(new TransientLifetimeManager(), new InjectionConstructor());
container.RegisterType<IRepository3, ConcreteRepository3>(new TransientLifetimeManager(), new InjectionConstructor());
Вопрос в том, как мне зарегистрировать экземпляры служб и типы контроллеров внутри моей настраиваемой ControllerFactory, чтобы единичный контейнер разрешал всю иерархию Controller-> Service-> Repository и не вызывал Resolve внутри контроллеров или служб?
Спасибо.