.net core 下容器
.net core 下容器 有两种 一个是单例根容器 一个是请求作用域容器
//依赖注入实例放在单例根容器
builder.Services.AddSingleton<IPerson, Person>();
//依赖注入实例放在单例根容器
builder.Services.AddTransient<IPerson, Person>();
//依赖注入实例请求作用域容器
builder.Services.AddScoped<IPerson, Person>();
AddSingleton AddTransient 均放在单例根容器中 可以直接 用 app.Services.GetService<IPerson>() 获取注入实例
特殊的是 Scoped 他是创建了一个子容器 不能从 根容器中 获取实例 那么为什么 我们在构造函数中就可以 获取到 是因为 .net 框架在请求时自动创建了一个 scope 作用域 所以 能获取到
如果不是 框架生成的 scope 同时还要获取 作用域的实例 需要 自己创建一个作用域获取 如下的方式 获取
using var scope1 = app.Services.CreateScope();
IPerson person2 = scope1.ServiceProvider.GetService<IPerson>();
浙公网安备 33010602011771号