国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】

這篇具有很好參考價(jià)值的文章主要介紹了.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

章節(jié)

第一章:https://www.cnblogs.com/kimiliucn/p/17613434.html
第二章:https://www.cnblogs.com/kimiliucn/p/17620153.html
第三章:https://www.cnblogs.com/kimiliucn/p/17620159.html


五、創(chuàng)建項(xiàng)目+Seesion傳值

5.1-使用Session

.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】


5.2-Log4Net組件使用

(1)管理Nuget程序,下載【log4net】和【Microsoft.Extensions.Logging.Log4Net.AspNetCore】
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(2)新建一個(gè)文件夾,保存log4net配置文件,一定要在【屬性】中的 復(fù)制到輸出目錄 選擇【始終復(fù)制】。
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(3)在【Program.cs】文件的【CreateHostBuilder】方法中配置log4net。
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
也可以使用以下方式配置(在Startup中):
這里注意,別選擇錯(cuò)了!然后就可以了。
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】


六、程序的發(fā)布運(yùn)行

6.1-項(xiàng)目的發(fā)布

(1)右擊項(xiàng)目,選擇【發(fā)布】
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(2)選擇【文件夾】
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(3)選擇要保存的路徑,然后點(diǎn)擊【完成】;
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(4)點(diǎn)擊【發(fā)布】,可以看到已經(jīng)發(fā)布完成了。
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】


6.2-項(xiàng)目的運(yùn)行

6.2.1-IIS發(fā)布

  • IIS直接簡(jiǎn)歷網(wǎng)站,目錄指向項(xiàng)目跟目錄下的Debug、Net5文件;——不行
  • 把項(xiàng)目發(fā)布后,目錄指向項(xiàng)目發(fā)布目錄;——可以的

6.2.2-ASP.NET Core跨平臺(tái)原因
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】

6.2.3-使用腳本啟動(dòng)網(wǎng)站
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】

6.2.4-發(fā)布之后運(yùn)行為什么樣式加載不出404?
(1)需要在【startup.cs】文件的【Configure】方法中引入一個(gè)中間件。
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】


七、命令參數(shù)讀取+配置多種讀取

7.1-配置文件讀?。?)

在【startup.cs】文件中讀取配置文件
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
在【控制器】中讀取配置文件。
(1)先構(gòu)造函數(shù)注入Configure
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(2)寫代碼獲取
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】


7.2-配置文件讀?。?)

(1)定義一個(gè)類,結(jié)構(gòu)(數(shù)據(jù)類型、屬性名)和配置文件中完全一致。
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(2)在【Startup.sc】配置一下
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(3)在控制器中,構(gòu)造函數(shù)注入一個(gè)IOptions
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(4)獲得并返回值
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(5)前端獲取值
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】


八、MVC開(kāi)發(fā)

8.1-什么是MVC?

  • V——View——視圖:呈現(xiàn)給用戶看到的內(nèi)容(表現(xiàn)層)
  • C——Controller——控制器:控制業(yè)務(wù)邏輯計(jì)算,調(diào)用服務(wù),選擇返回什么內(nèi)容,可以返回視圖,JSON、字符串等等。
  • M——Model——視圖模型:用作控制器和視圖之間傳遞數(shù)據(jù)的載體。

8.2-cshtml文件

其實(shí)是一個(gè)類文件。
Razor混編:可以在cshtml上寫 后臺(tái)C#代碼 + 前臺(tái)html代碼,混合起來(lái)寫;
(1)可以引入命名空間
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(2)直接寫后臺(tái)代碼
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(3)實(shí)現(xiàn)接口
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(4)可以依賴注入
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(5)可以添加特性Class
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(6)定義方法并調(diào)用
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(7)寫單行代碼、多行代碼
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】

.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(8)Razor表達(dá)式
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(9)輸出尖括號(hào)
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(10)for循環(huán)
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(11)在后臺(tái)代碼內(nèi)部寫HTML代碼
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】


8.3-如何解決修改視圖后無(wú)需編譯后即可生效?

修改視圖,增加了html代碼,不能馬上生效,怎么辦?使用中間件
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
1.引入Nuget包
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
2.在【Startup.cs】文件的票【ConfigureServices】方法中配置。
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】


8.4-Razor布局

8.4.1-我們看到的頁(yè)面組成到底有哪些內(nèi)容?
答:包含了Layout的模板嵌套的返回的需要渲染的視圖內(nèi)容;

8.4.2-如何嵌套呢?
答:通過(guò)Layout中RendBody()方法做了替換;把返回的視圖替換到模板也中,形成了一整塊的內(nèi)容;目的在于每一次返回不同的頁(yè)面的時(shí)候,能夠吧不變的視圖部分,種以重用;這樣就可以少些代碼。
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】

8.4.3-在模板頁(yè)面導(dǎo)入了JQ,在視圖頁(yè)面使用JQ為什么報(bào)錯(cuò)?
注意:

  • 在模板頁(yè)中使用CSS/JS的時(shí)候,為了提高效率,會(huì)把Css引入在模板的上方,將JS寫在模板的下方。頁(yè)面嵌套到模板頁(yè)后,就會(huì)出現(xiàn)在引用JS的上方調(diào)用JS,此時(shí)JS其實(shí)是調(diào)用不了的。

.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
答:因?yàn)镾cript是寫在下面的,先加載RenderBody,后加載JQ,所以會(huì)報(bào)錯(cuò),解決方法如下:
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】


九、Razor擴(kuò)展-HTML控件

9.1-Html擴(kuò)展控件(1)

本質(zhì):通過(guò)一個(gè)后臺(tái)方法,返回一個(gè)【已經(jīng)存在】的Html標(biāo)簽的字符串,瀏覽器在讀取的時(shí)候,就讀取成一個(gè)Html標(biāo)簽。
1.定義

 /// <summary>
        /// 圖片
        /// </summary>
        /// <param name="helper"></param>
        /// <param name="src"></param>
        /// <returns></returns>
        public static IHtmlContent Img(this IHtmlHelper helper,string src,string @class)
        {
            return new HtmlString($"<img src='{src}'  class='{@class}'/>");
        }

2.調(diào)用

<!--1.引入命名空間-->

<!--2.使用圖片--自定義 擴(kuò)展方法-->
@Html.Img("https://tpc.googlesyndication.com/simgad/3105023548593992165/downsize_200k_v1?w=200&h=200","border:1px solid red;")

9.2-Html擴(kuò)展控件(2)

通過(guò)一個(gè)后臺(tái)方法,返回一個(gè)【不存在】的Html標(biāo)簽的字符串,在讀取的時(shí)候,通過(guò)制后臺(tái)方法,去生成我們制定的標(biāo)簽。
1.寫一個(gè)擴(kuò)展方法,定義一個(gè)普通類,類名建議以TagHelper結(jié)尾,加上特性;如果沒(méi)有標(biāo)記特性,視圖中在調(diào)用的時(shí)候使用當(dāng)前類名去掉TagHelper后綴得到的的字符串來(lái)調(diào)用。繼承TagHelpre抽象類、或者實(shí)現(xiàn)接口ITagHelpr,二者選一起均可。然后實(shí)現(xiàn)接口Proccss方法。
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
2.在【_ViewImports.cshtml】進(jìn)行注冊(cè)
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
3.使用
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】


9.3-Razor局部視圖

1.創(chuàng)建一個(gè)局部視圖
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
2.進(jìn)行調(diào)用
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】

9.3.1-局部視圖的缺陷:
局部視圖沒(méi)有去訪問(wèn)控制器中的Action,所以不能完美的實(shí)現(xiàn)后臺(tái)代碼。可以使用視圖組件解決。


9.4-視圖組件-擴(kuò)展定制

9.4.1-視圖組件的優(yōu)點(diǎn)?

  • 呈現(xiàn)頁(yè)面相應(yīng)的某一部分而不是整個(gè)相應(yīng)
  • 包括在控制器和視圖之間發(fā)現(xiàn)的關(guān)注分離和可測(cè)試性優(yōu)勢(shì)
  • 可以具有參數(shù)和業(yè)務(wù)邏輯
  • 通常在頁(yè)面布局中調(diào)用

9.4.2-如何自定義視圖組件?
(1)Rzaor組件對(duì)應(yīng)的類需要以ViewComponent結(jié)尾,該類需要繼承自ViewCompnent類。
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(2)定義一個(gè)異步版本的InvokeAsync,可以自定義參數(shù),IncokeAsync就是返回組件內(nèi)容的方法。
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(3)在Views/Shared文件下建立Components文件夾,在這個(gè)文件下創(chuàng)建一個(gè)和組件類名相同(如果加了特性,就按照特性上面的名稱來(lái))的文件夾,然后創(chuàng)建一個(gè)Default.cshtml視圖。
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
注意:以上步驟可以不按照上面執(zhí)行,我們可以隨意新建一個(gè)視圖,然后指定路徑就可以了。
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(4)調(diào)用
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】


十、內(nèi)置容器基本使用

10.1-什么是IOC?

把對(duì)象的創(chuàng)建,統(tǒng)一交給第三方容器來(lái)創(chuàng)建;


10.2-如何使用IOC?

(1)在【Startup.cs】的【ConfigureServices】中注冊(cè)服務(wù);注冊(cè)抽象和具體的依賴關(guān)系;
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(2)通過(guò)構(gòu)造函數(shù)進(jìn)行依賴注入,自動(dòng)得到服務(wù)的實(shí)例;
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(3)調(diào)用;
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】


10.3-如何使用IOC?(第二種方法)

(1)在【Startup.cs】的【ConfigureServices】中注冊(cè)服務(wù);注冊(cè)抽象和具體的依賴關(guān)系;
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(2)通過(guò)構(gòu)造函數(shù)進(jìn)行依賴注入。
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(3)調(diào)用;
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】


10.4-在視圖中使用IOC

.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】


10.4-什么是依賴注入?

DI依賴注入:IServiceCollection支持且支持構(gòu)造函數(shù)注入。
如對(duì)象A依賴對(duì)象B,對(duì)象B依賴于對(duì)象C,就可以先構(gòu)造對(duì)象C,然后傳遞給對(duì)象B,然后傳遞給對(duì)象A,然后得到具體的實(shí)例。可以支持無(wú)限層級(jí)的依賴注入,前提是先要先注入服務(wù)(注冊(cè)抽象和具體的映射關(guān)系)。


10.5-IServiceCollection生命周期

那么在創(chuàng)建對(duì)象的時(shí)候, 不同的情況,需要讓對(duì)象單例,每一次都創(chuàng)建新的對(duì)象實(shí)例,不同的作用于創(chuàng)建新的實(shí)例。
AddTransient:順時(shí)聲明周期,每次獲取的都是不同的實(shí)例
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
AddSingleton:?jiǎn)卫芷冢谡麄€(gè)進(jìn)程中獲取的都是同一個(gè)實(shí)例
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
AddScoped:作用域生命周期(同一個(gè)作用域,獲取的是同一個(gè)對(duì)象的實(shí)例,不同的作用域,獲取的是不同的獨(dú)對(duì)象實(shí)例)
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
建議:開(kāi)發(fā)工作中,一般情況下,都是一個(gè)請(qǐng)求一個(gè)對(duì)象的實(shí)例,所以使用的是順時(shí)聲明周期(AddTransient)。


十一、Autofac容器

11.1-Autofac容器初識(shí)?

Autofac也是一款流行的IOC容器;


11.2-如何使用Autofac容器?

(1)管理Nuget程序包,下載并安裝【Autofac】
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(2)在【Startup.cs】的【ConfigureServices】中注冊(cè)服務(wù);
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】


11.3-Autofac注入方式-構(gòu)造函數(shù)注入

.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】


11.4-Autofac注入方式-屬性注入

.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】


11.5-Autofac注入方式-方法注入

.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】


11.6-Autofac生命周期-瞬時(shí)生命周期(默認(rèn))

瞬時(shí)生命周期:每一次獲取對(duì)象都是一個(gè)全新的實(shí)例,默認(rèn)的生命周期。
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】


11.7-Autofac生命周期-單例生命周期

單例聲明周期:在整個(gè)進(jìn)程中,對(duì)象永遠(yuǎn)都是同一個(gè)實(shí)例(SingleInstance)
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】


11.8-Autofac生命周期-每個(gè)生命周期范圍一個(gè)實(shí)例

每個(gè)生命周期范圍一個(gè)實(shí)例:同一個(gè)生命周期范圍內(nèi)是同一個(gè)實(shí)例,不同的生命周期范圍,實(shí)例不一樣。(InstancePerLifetimeScope)
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】


11.9-Autofac生命周期-每個(gè)匹配生命周期范圍一個(gè)實(shí)例

語(yǔ)法:InstancePerMatchingLifetimeScope(名稱)
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】


11.10-Autofac生命周期-每個(gè)請(qǐng)求一個(gè)實(shí)例

.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】


11.11-Autofac支持配置文件

(1)管理Nuget包,引入3個(gè)程序集;
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(2)新建一個(gè)配置文件【autofac.json】,記得將配置文件設(shè)置為:始終復(fù)制到目錄。
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(3)在【Startup.cs】的【ConfigureServices】中注冊(cè)服務(wù);
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】


11.12-Autofac整合MVC

注意:Autofac是一個(gè)第三方容器;
(1)指定Autofac工廠替換默認(rèn)工廠,在【Program.cs】中的【CreateHostBuilder】方法中指定。
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(2)在【Startup.cs】類中增加一個(gè)【ConfigureContainer】方法,用來(lái)注冊(cè)服務(wù)關(guān)系。

/// <summary>
/// 增加一個(gè)方法:
/// 整個(gè)方法被Autofac自動(dòng)調(diào)用
/// 負(fù)責(zé)注冊(cè)各種服務(wù)
/// </summary>
/// <param name="services"></param>
public void ConfigureContainer(ContainerBuilder containerBuilder) {
    containerBuilder.RegisterType<TestServiceA>().As<ITestServiceA>();
    containerBuilder.RegisterType<TestServiceB>().As<ITestServiceB>();
    containerBuilder.RegisterType<TestServiceC>().As<ITestServiceC>();
    containerBuilder.RegisterType<TestServiceD>().As<ITestServiceD>().PropertiesAutowired();
    containerBuilder.RegisterType<TestServiceE>().As<ITestServiceE>();
}

(3)通過(guò)控制器構(gòu)造函數(shù)注入,獲取實(shí)例。
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
這種方法也還能用:
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】


11.13-Autofac支持控制器屬性注入

(1)首先在【Startup.cs】中【ConfigureServices】方法中,指定控制器實(shí)例容器來(lái)創(chuàng)建,進(jìn)行替換。
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(2)創(chuàng)建一個(gè)類(特性);
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(3)創(chuàng)建一個(gè)類,用來(lái)判斷維度;
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(4)在【Startup.cs】中創(chuàng)建一個(gè)【ConfigureContainer】方法,負(fù)責(zé)注冊(cè)各種服務(wù)。
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】


11.14-Autofac一個(gè)實(shí)例多實(shí)現(xiàn)的問(wèn)題

注意:

  • 如果一個(gè)抽象多個(gè)實(shí)例,都注冊(cè)了,通過(guò)構(gòu)造函數(shù)用抽象類型來(lái)獲取實(shí)例,哪個(gè)是后面注冊(cè)的,就能獲得哪個(gè),覆蓋類型的。
  • 如果一個(gè)抽象多個(gè)實(shí)例,都注冊(cè)了,可以通過(guò)一個(gè)IEnumerable<抽象類>,當(dāng)做構(gòu)造函數(shù)參數(shù),可以獲取到左右注冊(cè)的具體的實(shí)例。

.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
一般使用以下方法:
(1)在【Startup.cs】中創(chuàng)建的【ConfigureContainer】方法中,注冊(cè)資源和實(shí)現(xiàn)(單抽象、多實(shí)現(xiàn))
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(2)通過(guò)構(gòu)造函數(shù)中,使用具體理性實(shí)理性做我參數(shù),可以匹配到不同的具體類型實(shí)例。
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】

.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(1)新建一個(gè)類,該類繼承Module類,實(shí)現(xiàn)Load方法。
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(2)與之前相同,不同的而方式:在【Startup.cs】中創(chuàng)建的【ConfigureContainer】方法中,注冊(cè)資源和實(shí)現(xiàn)(單抽象、多實(shí)現(xiàn))
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】


11.15-Autofac通過(guò)抽象(接口)支持AOP(面向切面編程-做應(yīng)用型系統(tǒng))

AOP-面向切面編程:不用修改之前代碼的基礎(chǔ)上,可以動(dòng)態(tài)的在某個(gè)動(dòng)作之前加一些操作,動(dòng)態(tài)的在某一個(gè)動(dòng)作之后做點(diǎn)什么事。
(1)管理Gurget程序包,下載【Castle.Core】包,該包用來(lái)動(dòng)態(tài)代理。
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(2)創(chuàng)建一個(gè)類為【CustomAutofacAop】,該類繼承自【IInterceptor】接口,并實(shí)現(xiàn)接口中的【Intercept】方法。
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(3)在服務(wù)的抽象上面做一個(gè)標(biāo)記,這個(gè)標(biāo)記是用來(lái):支持AOP擴(kuò)展能夠生效。
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(4)因?yàn)檫@個(gè)【CustomAutofacAop】實(shí)例也是通過(guò)Autofac的IOC來(lái)做的,所以需要在【Startup.cs】中創(chuàng)建的【ConfigureContainer】方法中,注冊(cè)服務(wù),讓Autofac支持AOP。
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】


11.16-Autofac通過(guò)類支持AOP

(1)管理Gurget程序包,下載【Castle.Core】包,該包用來(lái)動(dòng)態(tài)代理。
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(2)創(chuàng)建一個(gè)類為【CustomAutofacAopClass】,該類繼承自【IInterceptor】接口,并實(shí)現(xiàn)接口中的【Intercept】方法。
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(3)在類上面做一個(gè)標(biāo)記,這個(gè)標(biāo)記是用來(lái):支持AOP擴(kuò)展能夠生效。
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(4)因?yàn)檫@個(gè)【CustomAutofacAop】實(shí)例也是通過(guò)Autofac的IOC來(lái)做的,所以需要在【Startup.cs】中創(chuàng)建的【ConfigureContainer】方法中,注冊(cè)服務(wù),讓Autofac支持AOP。
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】


11.17-Autofac單抽象多實(shí)現(xiàn)構(gòu)造函數(shù)注入(MVC)

(1)在【Startup.cs】中創(chuàng)建的【ConfigureContainer】方法中,注冊(cè)服務(wù)。
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(2)在控制器中調(diào)用。
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】


11.18-Autofac單抽象多實(shí)現(xiàn)屬性注入

(1)道理和上面是一樣的,可以吧Autofac上下文當(dāng)做屬性來(lái)注入。
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】
(2)在使用的時(shí)候,通過(guò)Autofac上下文+不同注冊(cè)的標(biāo)識(shí),獲取到不同的具體實(shí)例。
.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】


上一章節(jié):https://www.cnblogs.com/kimiliucn/p/17613434.html
下一章節(jié):https://www.cnblogs.com/kimiliucn/p/17620159.html
原文地址:https://www.cnblogs.com/kimiliucn/p/17620153.html文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-637592.html

到了這里,關(guān)于.NET5從零基礎(chǔ)到精通:全面掌握.NET5開(kāi)發(fā)技能【第二章】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【送書(shū)福利-第二十三期】《從零基礎(chǔ)到精通Flutter開(kāi)發(fā)》

    【送書(shū)福利-第二十三期】《從零基礎(chǔ)到精通Flutter開(kāi)發(fā)》

    ?? 作者介紹:我是程序員洲洲,一個(gè)熱愛(ài)寫作的非著名程序員。CSDN全棧優(yōu)質(zhì)領(lǐng)域創(chuàng)作者、華為云博客社區(qū)云享專家、阿里云博客社區(qū)專家博主、前后端開(kāi)發(fā)、人工智能研究生。公粽號(hào):程序員洲洲。 ?? 本文專欄:本文收錄于洲洲的《送書(shū)福利》系列專欄,該專欄福利多多

    2024年02月06日
    瀏覽(25)
  • 從零基礎(chǔ)到精通Flutter開(kāi)發(fā):一步步打造跨平臺(tái)應(yīng)用

    從零基礎(chǔ)到精通Flutter開(kāi)發(fā):一步步打造跨平臺(tái)應(yīng)用

    ?? 個(gè)人網(wǎng)站:【工具大全】【游戲大全】【神級(jí)源碼資源網(wǎng)】 ?? 前端學(xué)習(xí)課程:??【28個(gè)案例趣學(xué)前端】【400個(gè)JS面試題】 ?? 尋找學(xué)習(xí)交流、摸魚(yú)劃水的小伙伴,請(qǐng)點(diǎn)擊【摸魚(yú)學(xué)習(xí)交流群】 導(dǎo)言 Flutter是一種流行的開(kāi)發(fā)框架,可以用來(lái)構(gòu)建美觀、高性能且跨平臺(tái)的移動(dòng)應(yīng)

    2024年02月08日
    瀏覽(95)
  • 從零開(kāi)始學(xué)習(xí)JavaScript:輕松掌握編程語(yǔ)言的核心技能④

    從零開(kāi)始學(xué)習(xí)JavaScript:輕松掌握編程語(yǔ)言的核心技能④

    ??????個(gè)人簡(jiǎn)介:以山河作禮。 ??????: Python領(lǐng)域新星創(chuàng)作者,CSDN實(shí)力新星認(rèn)證,阿里云社區(qū)專家博主 ????:Web全棧開(kāi)發(fā)專欄:《Web全棧開(kāi)發(fā)》免費(fèi)專欄,歡迎閱讀! ?? JavaScript 可用來(lái)在數(shù)據(jù)被送往服務(wù)器前對(duì) HTML 表單中的這些輸入數(shù)據(jù)進(jìn)行驗(yàn)證。 表單數(shù)據(jù)經(jīng)常需

    2024年02月08日
    瀏覽(28)
  • 從零開(kāi)始學(xué)習(xí)JavaScript:輕松掌握編程語(yǔ)言的核心技能①

    從零開(kāi)始學(xué)習(xí)JavaScript:輕松掌握編程語(yǔ)言的核心技能①

    ??????個(gè)人簡(jiǎn)介:以山河作禮。 ??????: Python領(lǐng)域新星創(chuàng)作者,CSDN實(shí)力新星認(rèn)證,阿里云社區(qū)專家博主 ????:Web全棧開(kāi)發(fā)專欄:《Web全棧開(kāi)發(fā)》免費(fèi)專欄,歡迎閱讀! ???? JavaScript 是一種腳本語(yǔ)言,用于在 Web 頁(yè)面上執(zhí)行交互式操作和動(dòng)態(tài)效果 。它最初由 Brendan

    2024年02月07日
    瀏覽(27)
  • 從零開(kāi)始學(xué)習(xí)JavaScript:輕松掌握編程語(yǔ)言的核心技能⑤

    從零開(kāi)始學(xué)習(xí)JavaScript:輕松掌握編程語(yǔ)言的核心技能⑤

    ??????個(gè)人簡(jiǎn)介:以山河作禮。 ??????: Python領(lǐng)域新星創(chuàng)作者,CSDN實(shí)力新星認(rèn)證,阿里云社區(qū)專家博主 ????:Web全棧開(kāi)發(fā)專欄:《Web全棧開(kāi)發(fā)》免費(fèi)專欄,歡迎閱讀! ???? 在 JavaScript 中,函數(shù)可以通過(guò) function 來(lái)定義 。 ?? 函數(shù)定義的一般語(yǔ)法如下: 其中,

    2024年02月08日
    瀏覽(32)
  • 從零開(kāi)始學(xué)習(xí)JavaScript:輕松掌握編程語(yǔ)言的核心技能②

    從零開(kāi)始學(xué)習(xí)JavaScript:輕松掌握編程語(yǔ)言的核心技能②

    ??????個(gè)人簡(jiǎn)介:以山河作禮。 ??????: Python領(lǐng)域新星創(chuàng)作者,CSDN實(shí)力新星認(rèn)證,阿里云社區(qū)專家博主 ????:Web全棧開(kāi)發(fā)專欄:《Web全棧開(kāi)發(fā)》免費(fèi)專欄,歡迎閱讀! ?? ?? JavaScript 函數(shù)是一段可以被重復(fù)調(diào)用的代碼塊。它可以接收輸入?yún)?shù),處理這些參數(shù),然后返

    2024年02月08日
    瀏覽(27)
  • 從零開(kāi)始學(xué)習(xí)JavaScript:輕松掌握編程語(yǔ)言的核心技能③

    從零開(kāi)始學(xué)習(xí)JavaScript:輕松掌握編程語(yǔ)言的核心技能③

    ??????個(gè)人簡(jiǎn)介:以山河作禮。 ??????: Python領(lǐng)域新星創(chuàng)作者,CSDN實(shí)力新星認(rèn)證,阿里云社區(qū)專家博主 ????:Web全棧開(kāi)發(fā)專欄:《Web全棧開(kāi)發(fā)》免費(fèi)專欄,歡迎閱讀! ???? JavaScript中的if…else語(yǔ)句是一種條件語(yǔ)句,用于在滿足特定條件時(shí)執(zhí)行不同的代碼塊 。 ??

    2024年02月08日
    瀏覽(20)
  • 搭建Flutter開(kāi)發(fā)環(huán)境、從零基礎(chǔ)到精通(文末送書(shū)【北大出版社】)

    搭建Flutter開(kāi)發(fā)環(huán)境、從零基礎(chǔ)到精通(文末送書(shū)【北大出版社】)

    目錄 搭建開(kāi)發(fā)環(huán)境 1. 下載Flutter SDK 2. 設(shè)置鏡像地址及環(huán)境變量 3. 安裝與設(shè)置Android Studio 4. 安裝Visual Studio Code與Flutter開(kāi)發(fā)插件 5. IDE的使用和配置 6. 安裝Xcode 7. 檢查Flutter開(kāi)發(fā)環(huán)境 好書(shū)推薦 內(nèi)容簡(jiǎn)介 作者簡(jiǎn)介 Flutter可以跨平臺(tái)運(yùn)行在Windows、macOS、Linux等系統(tǒng)上。接下來(lái)介紹如

    2024年02月08日
    瀏覽(30)
  • 網(wǎng)絡(luò)安全|滲透測(cè)試入門學(xué)習(xí),從零基礎(chǔ)入門到精通—滲透中的開(kāi)發(fā)語(yǔ)言

    網(wǎng)絡(luò)安全|滲透測(cè)試入門學(xué)習(xí),從零基礎(chǔ)入門到精通—滲透中的開(kāi)發(fā)語(yǔ)言

    目錄 前面的話 開(kāi)發(fā)語(yǔ)言 1、html 解析 2、JavaScript 用法 3、JAVA ? 特性 4、PHP 作用 PHP 能做什么? 5、C/C++ 使用 如何學(xué)習(xí) 關(guān)于在滲透中需要學(xué)習(xí)的語(yǔ)言第一點(diǎn)個(gè)人認(rèn)為就是可以打一下HTML,JS那些基礎(chǔ)知識(shí),磨刀不誤砍柴工。其次,了解基本的代碼后,就可以去學(xué)習(xí)相關(guān)的漏洞知

    2024年02月09日
    瀏覽(20)
  • Android車載應(yīng)用系統(tǒng)開(kāi)發(fā)入門教程(非常詳細(xì))從零基礎(chǔ)入門到精通,看完這一篇就夠了

    Android車載應(yīng)用系統(tǒng)開(kāi)發(fā)入門教程(非常詳細(xì))從零基礎(chǔ)入門到精通,看完這一篇就夠了

    眾所周知,國(guó)內(nèi)的安卓市場(chǎng)內(nèi)卷極其嚴(yán)重,原生應(yīng)用開(kāi)發(fā)可謂是寸步難行,但整個(gè)Android生態(tài)卻無(wú)比繁榮,手機(jī)、平板、電視、音視頻等等,特別是在智能汽車+電動(dòng)汽車的浪潮下,車載行業(yè)成為許多Android人競(jìng)相奔走的行業(yè), 薪資待遇以及崗位招聘呈上漲趨勢(shì) 。 對(duì)于涉事多年

    2024年02月09日
    瀏覽(25)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包