.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