.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>();

 

posted on 2023-06-08 11:57  是水饺不是水饺  阅读(66)  评论(0)    收藏  举报

导航