众所周知,在asp.net Startup 类中,有一种方法 ConfigureServices ,我们可以添加自定义服务。服务通过依赖注入提供。
ASP.NET Core包含一个简单的内置控制反转(IoC) 默认情况下支持构造函数注入的容器,但也可以 很容易被您选择的IoC容器取代。除了它 松散耦合效益,DI可在您的整个过程中提供服务 应用
我的问题是如何用我自己的IoC替换内置的IoC?
如果你有,请给我一个例子。
答案 0 :(得分:7)
ASP.NET Core目前有许多不同的容器,包括
在每种情况下,具体使用它们的方式都不同,但基本上它们都遵循相同的模式:
IServiceProvider
值得注意的是,围绕这些库将与内置容器集成的方式发生了许多对话。评论here提供了对话的完美摘要,您也可以直接进入GitHub here和here的讨论。
答案 1 :(得分:0)
在ASP.Net Core中实现Autofac的示例代码
//here added Autofac library and inherit module class
//Instance of your third-party Container
Step I:
public class MotorServiceModule : Module
{
protected override void Load(ContainerBuilder builder)
{
builder.RegisterType<RequestResponseRespository>().As<IRequestResponseRespository>();
}
}
Step II:
public IServiceProvider ConfigureServices(IServiceCollection services)
{
//added scoped IExtRepository and RequestResponseRespository class
services.AddScoped<IExtRepository>(repository => new RequestResponseRespository(Configuration)));
//Add Autofac
//Populate the new container initialize container
//Return AutofacServiceProvider which
//Step III:
var containerBuilder = new ContainerBuilder();
containerBuilder.RegisterModule<MotorServiceModule>();
containerBuilder.Populate(services);
var container = containerBuilder.Build();
return new AutofacServiceProvider(container);
}