日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

ASP.NET Core应用的7种依赖注入方式

發布時間:2023/12/4 asp.net 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASP.NET Core应用的7种依赖注入方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ASP.NET Core框架中的很多核心對象都是通過依賴注入方式提供的,如用來對應用進行初始化的Startup對象、中間件對象,以及ASP.NET Core MVC應用中的Controller對象和View對象等,所以我們可以在定義它們的時候采用注入的形式來消費已經注冊的服務。下面簡單介紹幾種服務注入的應用場景。

00

廣而告之

本篇文章節選自《ASP.NET Core 3框架揭秘》,針對本書的5折優惠還有最后2天,有興趣可以掃描下方二維碼或者從這里入群購買。

01

Startup構造器

目標讀者

構成HostBuilderContext上下文的兩個核心對象(表示配置的IConfiguration對象和表示承載環境的IHostEnvironment對象)可以直接注入Startup構造函數中進行消費。由于ASP.NET Core應用中的承載環境通過IWebHostEnvironment接口表示,IWebHostEnvironment接口派生于IHostEnvironment接口,所以也可以通過注入IWebHostEnvironment對象的方式得到當前承載環境相關的信息。

我們可以通過一個簡單的實例來驗證針對Startup的構造函數注入。如下面的代碼片段所示,我們在調用IWebHostBuilder接口的Startup<TStartup>方法時注冊了自定義的Startup類型。在定義Startup類型時,我們在其構造函數中注入上述3個對象,提供的調試斷言不僅證明了3個對象不為Null,還表明采用IHostEnvironment接口和IWebHostEnvironment接口得到的其實是同一個實例。

class?Program {static?void?Main(){Host.CreateDefaultBuilder().ConfigureWebHostDefaults(builder?=>?builder.UseStartup<Startup>()).Build().Run();} }public?class?Startup {public?Startup(IConfiguration?configuration,?IHostEnvironment??hostingEnvironment,?IWebHostEnvironment?webHostEnvironment){Debug.Assert(configuration?!=?null);Debug.Assert(hostingEnvironment?!=?null);Debug.Assert(webHostEnvironment?!=?null);Debug.Assert(ReferenceEquals(hostingEnvironment,?webHostEnvironment));}public?void?Configure(IApplicationBuilder?app)?{?} }

02

Startup.Configure方法

..目標讀者

依賴服務還可以直接注入用于注冊中間件的Configure方法中。如果構造函數注入還可以對注入的服務有所選擇,那么對于Configure方法來說,通過任意方式注冊的服務都可以注入其中,包括通過調用IHostBuilder、IWebHostBuilder和Startup自身的ConfigureServices方法注冊的服務,還包括框架自行注冊的所有服務。

如下面的代碼代碼片段所示,我們分別調用IWebHostBuilder和Startup的ConfigureServices方法注冊了針對IFoo接口和IBar接口的服務,這兩個服務直接注入Startup的Configure方法中。另外,Configure方法要求提供一個用來注冊中間件的IApplicationBuilder對象作為參數,但是對該參數出現的位置并未做任何限制。

class?Program {static?void?Main(){Host.CreateDefaultBuilder().ConfigureWebHostDefaults(builder?=>?builder.UseStartup<Startup>().ConfigureServices(svcs?=>?svcs.AddSingleton<IFoo,?Foo>())).Build().Run();} }public?class?Startup {public?void?ConfigureServices(IServiceCollection?services)?=>?services.AddSingleton<IBar,?Bar>();public?void?Configure(IApplicationBuilder?app,?IFoo?foo,?IBar?bar){Debug.Assert(foo?!=?null);Debug.Assert(bar?!=?null);} }

總結

以上是生活随笔為你收集整理的ASP.NET Core应用的7种依赖注入方式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。