Autofac。具有参数的IoC容器。最佳做法

问题描述 投票:1回答:1

研究了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容器的最佳实践。注入容器我知道我需要将容器置于较高的水平,并且...

c# asp.net dependency-injection inversion-of-control autofac
1个回答
1
投票

使用IOC容器时,您必须在容器中注册所有服务。请求服务时,这是容器的责任,以创建所需服务的图表。

© www.soinside.com 2019 - 2024. All rights reserved.