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

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

一、服務(wù)注冊

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

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

那么系統(tǒng)在構(gòu)建ASP.NET Core管道的時候到底自行注冊了那些服務(wù)呢?對于這個問題,我們不用去查看相關(guān)的源代碼如何編寫,而只需要編寫如下一個簡單的程序就可以將這些服務(wù)輸出來。