前言
本文介紹Asp.Net Core中默認(rèn)的依賴注入(DI)模式。
環(huán)境
1.Visual Studio 2017
2.Asp.Net Core 2.2
開局
第一手:依賴注入說明
1.一個(gè)例子
主機(jī)和主機(jī)中硬盤,可以說主機(jī)中硬盤是主機(jī)的依賴項(xiàng)介衔,若更換硬盤,需拆主機(jī)铐拐。
若將硬盤通過USB接口外接徘键,那么只需將新硬盤接入U(xiǎn)SB口即可。
2.例子代碼
3.控制反轉(zhuǎn)(IoC)
控制反轉(zhuǎn):將依賴交給第三方容器管理遍蟋。
控制反轉(zhuǎn)與依賴注入的關(guān)系:控制反轉(zhuǎn)是一種思想吹害,依賴注入是控制反轉(zhuǎn)的一種實(shí)現(xiàn)。
4.依賴注入(DI)
現(xiàn)在再回到Startup中看看Asp.Net Core中的依賴注入虚青。
1.代碼中這些均為依賴注入它呀,這些由框架實(shí)現(xiàn),以后源碼解讀時(shí)再做詳述棒厘;
2.下面介紹Asp.Net Core自帶的依賴注入框架對(duì)服務(wù)依賴的注冊(cè)和使用钟些。
第二手:依賴注入 - 注冊(cè)服務(wù)
在Asp.Net Core中向容器中注冊(cè)服務(wù)有三種方法,其區(qū)別在于生命周期不同:
- AddTransient:每次請(qǐng)求會(huì)獲取一個(gè)新實(shí)例绊谭,即:每次GetService都會(huì)獲取一個(gè)新實(shí)例
- AddScoped :每個(gè)請(qǐng)求會(huì)獲取一個(gè)新實(shí)例,即:在一個(gè)請(qǐng)求內(nèi)汪拥,每次GetService都會(huì)獲得同一個(gè)實(shí)例
- AddSingleton:每次請(qǐng)求會(huì)獲取同一個(gè)實(shí)例达传,即:在應(yīng)用程序生命周期內(nèi),每次GetService都會(huì)獲得同一個(gè)實(shí)例
所說的生命周期實(shí)際對(duì)應(yīng)于類實(shí)例的創(chuàng)建時(shí)機(jī)迫筑,GetService實(shí)際是獲取類的實(shí)例宪赶。
容器根據(jù)注冊(cè)方式不同,判斷是否需要?jiǎng)?chuàng)建新實(shí)例返回脯燃。
第一手:依賴注入 - 使用服務(wù)
1.Startup中使用
2.Controller構(gòu)造函數(shù)注入
3.View注入
在Startup中的注冊(cè)方式同Controller搂妻,這里只顯示在View注入方式。
終局
本文介紹Asp.Net Core中默認(rèn)的依賴注入(DI)模式辕棚,下局介紹讀取配置文件欲主,待續(xù)...
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者