.net core 注入的几种方式

一.注册的几种类型:

services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();//单利模式,整个应用程序生命周期以内只创建一个实例
services.Add(new ServiceDescriptor(typeof(IAtomService<>), typeof(AtomService<>), ServiceLifetime.Scoped));//泛型注入
services.AddScoped<ISecurityService, SecurityService>();//在同一个Scope内只初始化一个实例 ,可以理解为( 每一个request级别只创建一个实例,同一个http request会在一个 scope内)
services.Transient<ISecurityService, SecurityService>();//每一次GetService都会创建一个新的实例

 二.注入的几种方式:

1.构造函数注入

2.view注入

3.通过 HttpContext来获取实例

 

 

.NET CORE 存在三种依赖注入的方式

AddTransient:瞬时模式:每次请求,都获取一个新的实例。即使同一个请求获取多次也会是不同的实例
例如:Controller添加一个IUser 的依赖,在Action中,IUser的实例是不同的。
使用方式:services.AddTransient<IOperationTransient, Operation>();

AddScoped:每次请求,都获取一个新的实例。同一个请求获取多次会得到相同的实例
例如:上例中,同一个Action中,实例是相同的。
使用方式:services.AddScoped<IMyDependency, MyDependency>();

AddSingleton:单例模式:每次都获取同一个实例
使用方式:services.AddSingleton<ISchedulerFactory, StdSchedulerFactory>(); //注册ISchedulerFactory的实例

也可以直接注入一个类,例如helper类:services.AddTransient<ExportHelper>();



posted @ 2020-04-16 17:33  Homegu  阅读(2271)  评论(0编辑  收藏  举报