研究了Autofac documentation和一些stackoverflow问题之后>
Best Practices for IOC Container,
IoC Container. Inject container
我了解我需要将容器置于较高的级别,然后通过该容器以进入需要的类。
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; } }
autofac配置部分。
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
告诉我挖掘哪种方式,我完全感到困惑。我将不胜感激。 =)
学习了Autofac文档后,以及一些stackoverflow问题提出了IOC容器,IoC容器的最佳实践。注入容器我知道我需要将容器置于较高的水平,并且...
使用IOC容器时,您必须在容器中注册所有服务。请求服务时,这是容器的责任,以创建所需服务的图表。