在對ASP.NET Core管道中關于依賴注入的兩個核心對象(ServiceCollection和ServiceProvider)有了足夠的認識之后,我們將關注的目光轉移到編程層面。在ASP.NET Core應用中基于依賴注入的編程主要涉及到兩個方面,它們分別是將服務注冊到ServiceCollection中,和采用注入的方式利用ServiceProvider提供我們所需的服務。我們先來討論ASP.NET Core應用中如何進行服務注冊。[本文已經(jīng)同步到《ASP.NET Core框架揭秘》之中]
目錄
一、服務注冊
系統(tǒng)自動注冊的服務
手工注冊的服務
二、以注入的形式提取服務
啟動類型的構造函數(shù)和Configure方法種注入服務
中間件類型的構造函數(shù)和Invoke方法中注入服務
Controller類型的構造函數(shù)中注入服務
View中注入服務
三、與第三方DI框架的整合
一、服務注冊
就注冊的主體來劃分,ASP.NET Core應用中注冊的服務大體可以分為兩種類型,一種是WebHostBuilder在創(chuàng)建WebHost之前自動注冊的服務,這些服務確保了后續(xù)管道能夠順利構建并能提供基本的請求處理能力。另一種則是用戶根據(jù)自身的需要注冊的,如果系統(tǒng)自動注冊的服務不符合我們的需求,我們也可以注冊自己的服務來覆蓋它。
系統(tǒng)自動注冊的服務
那么系統(tǒng)在構建ASP.NET Core管道的時候到底自行注冊了那些服務呢?對于這個問題,我們不用去查看相關的源代碼如何編寫,而只需要編寫如下一個簡單的程序就可以將這些服務輸出來。
1: public class Program
2: {
3: public static void Main()