在對(duì)ASP.NET Core管道中關(guān)于依賴注入的兩個(gè)核心對(duì)象(ServiceCollection和ServiceProvider)有了足夠的認(rèn)識(shí)之后,我們將關(guān)注的目光轉(zhuǎn)移到編程層面。在ASP.NET Core應(yīng)用中基于依賴注入的編程主要涉及到兩個(gè)方面,它們分別是將服務(wù)注冊(cè)到ServiceCollection中,和采用注入的方式利用ServiceProvider提供我們所需的服務(wù)。我們先來(lái)討論ASP.NET Core應(yīng)用中如何進(jìn)行服務(wù)注冊(cè)。[本文已經(jīng)同步到《ASP.NET Core框架揭秘》之中]

目錄
一、服務(wù)注冊(cè)
    系統(tǒng)自動(dòng)注冊(cè)的服務(wù)
    手工注冊(cè)的服務(wù)
二、以注入的形式提取服務(wù)
    啟動(dòng)類型的構(gòu)造函數(shù)和Configure方法種注入服務(wù)
    中間件類型的構(gòu)造函數(shù)和Invoke方法中注入服務(wù)
    Controller類型的構(gòu)造函數(shù)中注入服務(wù)
    View中注入服務(wù)
三、與第三方DI框架的整合

一、服務(wù)注冊(cè)

就注冊(cè)的主體來(lái)劃分,ASP.NET Core應(yīng)用中注冊(cè)的服務(wù)大體可以分為兩種類型,一種是WebHostBuilder在創(chuàng)建WebHost之前自動(dòng)注冊(cè)的服務(wù),這些服務(wù)確保了后續(xù)管道能夠順利構(gòu)建并能提供基本的請(qǐng)求處理能力。另一種則是用戶根據(jù)自身的需要注冊(cè)的,如果系統(tǒng)自動(dòng)注冊(cè)的服務(wù)不符合我們的需求,我們也可以注冊(cè)自己的服務(wù)來(lái)覆蓋它。

系統(tǒng)自動(dòng)注冊(cè)的服務(wù)

那么系統(tǒng)在構(gòu)建ASP.NET Core管道的時(shí)候到底自行注