.net core 在DI容器中为所有控制器分配一个寄存器

.net core 在DI容器中为所有控制器分配一个寄存器,.net-core,autofac,.net Core,Autofac,我有一个相当简单的问题,我正在.NETCore2.0下测试Autofac DI容器,例如我有一个控制器 public class ValuesController : Controller { private readonly ITestModel _testModel; public ValuesController(ITestModel testModel) { _testModel = testModel; } } 并在启动时注册DI:

我有一个相当简单的问题,我正在.NETCore2.0下测试Autofac DI容器,例如我有一个控制器

public class ValuesController : Controller
{
    private readonly ITestModel _testModel;

    public ValuesController(ITestModel testModel)
    {
        _testModel = testModel;
    }
}
并在启动时注册DI:

    public IServiceProvider ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();
        var builder = new ContainerBuilder();

        builder.RegisterType<TestModel>().As<ITestModel>();
        builder.Populate(services);
        var container = builder.Build();

        return container.Resolve<IServiceProvider>();
    }
公共IServiceProvider配置服务(IServiceCollection服务)
{
services.AddMvc();
var builder=new ContainerBuilder();
builder.RegisterType().As();
建造商。填充(服务);
var container=builder.Build();
返回container.Resolve();
}

它工作得很好,但我一直在想,如果我有20个这样的控制器和20多个带构造函数的逻辑类,以及一些接口的参数,我是否需要以同样的方式注册它们,它很快就会变得很难看。所以我的问题是,在这个环境中,是否有可能一次将所有只有接口的控制器和类注册为参数???

如in注释所述,程序集扫描但所有引用(当然由接口过滤)的程序集都按计划工作。

如in注释所述,程序集扫描,但在所有引用的情况下(当然是通过界面过滤),程序集按计划工作。

builder
            builder
            .RegisterAssemblyTypes(typeof(HomeController).Assembly)
            .AssignableTo<Controller>()
            .InstancePerLifetimeScope()
            .PropertiesAutowired();           
.RegisterAssemblyTypes(typeof(HomeController).Assembly) .可转让给 .InstancePerLifetimeScope()实例 .属性自动连线();
请确保引用项目中的控制器(
HomeController

builder
.RegisterAssemblyTypes(typeof(HomeController).Assembly)
.可转让给
.InstancePerLifetimeScope()实例
.属性自动连线();
请确保引用项目中的控制器(
HomeController


查看Autofac文档中的概念。查看Autofac文档中的概念。