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




免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM