<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
        當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

        ASP.NET Core DI手動(dòng)獲取注入對(duì)象的方法

        來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 22:34:46
        文檔

        ASP.NET Core DI手動(dòng)獲取注入對(duì)象的方法

        ASP.NET Core DI手動(dòng)獲取注入對(duì)象的方法:依賴注入簡(jiǎn)單介紹: 依賴注入(Dependency injection , DI)是一種實(shí)現(xiàn)對(duì)象及其合作者或依賴項(xiàng)之間松散耦合的技術(shù)。將類用來(lái)執(zhí)行其操作的這些對(duì)象以某種方式提供給該類,而不是直接實(shí)例化合作者或使用靜態(tài)引用。 ASP.NET Core DI 一般使用構(gòu)造函數(shù)注
        推薦度:
        導(dǎo)讀ASP.NET Core DI手動(dòng)獲取注入對(duì)象的方法:依賴注入簡(jiǎn)單介紹: 依賴注入(Dependency injection , DI)是一種實(shí)現(xiàn)對(duì)象及其合作者或依賴項(xiàng)之間松散耦合的技術(shù)。將類用來(lái)執(zhí)行其操作的這些對(duì)象以某種方式提供給該類,而不是直接實(shí)例化合作者或使用靜態(tài)引用。 ASP.NET Core DI 一般使用構(gòu)造函數(shù)注

        依賴注入簡(jiǎn)單介紹:

        依賴注入(Dependency injection , DI)是一種實(shí)現(xiàn)對(duì)象及其合作者或依賴項(xiàng)之間松散耦合的技術(shù)。將類用來(lái)執(zhí)行其操作的這些對(duì)象以某種方式提供給該類,而不是直接實(shí)例化合作者或使用靜態(tài)引用。

        ASP.NET Core DI 一般使用構(gòu)造函數(shù)注入獲取對(duì)象,比如在ConfigureServices配置注入后,通過(guò)下面方式獲取:

        private IValueService _valueService;
        
        public ValueController(IValueService valueService)
        {
         _valueService = valueService;
        }

        那如果手動(dòng)獲取注入對(duì)象呢?

        第一種獲取方式(有時(shí)會(huì)獲取不到,不推薦使用):

        var services = new ServiceCollection();
        var provider = services.BuildServiceProvider();
        
        var _valueService = provider.GetService<IValueService>();

        第二種獲取方式(推薦使用):

        public void Configure(IApplicationBuilder app)
        {
         ServiceLocator.Instance = app.ApplicationServices;
        }
        
        public static class ServiceLocator
        {
         public static IServiceProvider Instance { get; set; }
        }
        
        
        public void SomeRandomMethod()
        {
         var valueService = ServiceLocator.Instance.GetService<IValueService>();
        
         // Do something with service
        }

        補(bǔ)充:需要注意的是,使用ServiceLocator.Instance.GetService<T>(); ,只能獲取AddTransient和AddSingleton注入的對(duì)象,而不能獲取AddScoped(請(qǐng)求生命周期內(nèi)唯一)注入的對(duì)象,不是不能獲取,而是獲取的和構(gòu)造函數(shù)獲取的不是相同對(duì)象,也就是說(shuō)獲取的對(duì)象沒(méi)有共享,使用場(chǎng)景比如IUnitOfWork。

        那怎么手動(dòng)獲取請(qǐng)求生命周期內(nèi)的注入對(duì)象呢?方法如下:

        using Microsoft.AspNetCore.Http;
        using Microsoft.Extensions.DependencyInjection;
        
        namespace Sample.Domain
        {
         public class SampleDomainService : IDomainService
         {
         private IUnitOfWork _unitOfWork;
        
         public SampleDomainService(IHttpContextAccessor httpContextAccessor)
         {
         _unitOfWork = httpContextAccessor.HttpContext.RequestServices.GetService<IUnitOfWork>();
         }
         }
        }

        IHttpContextAccessor接口在Microsoft.AspNetCore.Http.AbstractionsNuget 程序包下。

        參考資料:

      1. Accessing IServiceProvider in static context
      2. No way to get scope for current http request (Autofac 4)?
      3. 總結(jié)

        聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        ASP.NET Core DI手動(dòng)獲取注入對(duì)象的方法

        ASP.NET Core DI手動(dòng)獲取注入對(duì)象的方法:依賴注入簡(jiǎn)單介紹: 依賴注入(Dependency injection , DI)是一種實(shí)現(xiàn)對(duì)象及其合作者或依賴項(xiàng)之間松散耦合的技術(shù)。將類用來(lái)執(zhí)行其操作的這些對(duì)象以某種方式提供給該類,而不是直接實(shí)例化合作者或使用靜態(tài)引用。 ASP.NET Core DI 一般使用構(gòu)造函數(shù)注
        推薦度:
        標(biāo)簽: 手動(dòng) 對(duì)象 di
        • 熱門焦點(diǎn)

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 一级一片免费视频播放| 亚洲精品日韩中文字幕久久久| 亚洲欧美成aⅴ人在线观看| 四虎永久在线观看免费网站网址| 亚洲bt加勒比一区二区| 99re6免费视频| 亚洲精品人成电影网| 日本免费一区二区在线观看| 亚洲国产成人无码av在线播放| 日本免费xxxx| 亚洲乱码中文字幕在线| 日本高清免费aaaaa大片视频| 亚洲av无码专区亚洲av不卡| 免费永久国产在线视频| 日本一区二区在线免费观看 | 日韩免费码中文在线观看| 国产成人综合久久精品免费| 免费中文字幕视频| 亚洲午夜久久久影院伊人| 日韩免费在线观看视频| 中文字幕亚洲综合久久| 成人免费一级毛片在线播放视频 | 亚洲日本中文字幕天天更新| 国产在线98福利播放视频免费| 美女18毛片免费视频| 国产亚洲综合久久系列| 3d动漫精品啪啪一区二区免费 | 亚洲国产一区二区视频网站| 国产免费伦精品一区二区三区| 亚洲a在线视频视频| 成熟女人牲交片免费观看视频| 无套内谢孕妇毛片免费看看| 亚洲成av人片天堂网| 免费精品国产自产拍在| 特级毛片爽www免费版| 亚洲人成亚洲精品| 免费精品一区二区三区在线观看 | 亚洲人成图片网站| 亚洲性在线看高清h片| h在线观看视频免费网站| 免费一级做a爰片久久毛片潮|