После изучения документации Autofa c и некоторых вопросов по стеку
Рекомендации для IO C Контейнер ,
Io C Контейнер. Внедрить контейнер
Я понимаю, что мне нужно поставить контейнер на высокий уровень, и после этого пройти через необходимые классы.
f.ex У меня есть контроллер класса высокого уровня
public class AccountController : Controller
{
private readonly IUserManager userManager;
public AccountController(IUserManager userManager) //I configure Global.asax and there will
{ //be UserManager class. OK.
this.userManager = userManager;
}
}
на нижнем уровне у меня есть класс UserManager с параметром IUnitOfWork. Должен ли я поместить туда новый экземпляр UnitOfWork или сделать это с каким-нибудь контейнером?
public class UserManager : IUserManager
{
readonly IUnitOfWork _unitOfWork;
public UserManager (IUnitOfWork unitOfWork)
{
this._unitOfWork = unitOfWork;
}
}
Кусок конфигурации автофа c.
conteinerBuilder.RegisterType<UserManager>().As<IUserManager>()
.WithParameter("unitOfWork",new UnitOfWork()) //This is what bothers me
//Like I understand we wanna
//work with abstraction not with some
//implementations but there I must use
//UnitOfWork
Скажите, в какую сторону копать, я полностью сбит с толку. Я буду благодарен за любую помощь. =)