我有一个相当简单的问题,我现在在.net core 2.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>();
}
它工作正常,但我一直在想,如果生病了,有20个控制器和20多个带有带某些接口的参数的构造函数的逻辑类,我需要以相同的方式注册它们,它会马上变得非常丑陋。所以我的问题是,是否可以在此环境中注册所有仅具有接口作为参数的控制器和类?
答案 0 :(得分:0)
正如评论所述,汇编扫描但所有引用(当然通过界面过滤),汇编确实按计划工作。
答案 1 :(得分:0)
builder
.RegisterAssemblyTypes(typeof(HomeController).Assembly)
.AssignableTo<Controller>()
.InstancePerLifetimeScope()
.PropertiesAutowired();
请务必在您的项目中引用控制器(在这种情况下为HomeController
)