如何在.NET Core控制台程序中使用依赖注入
背景介紹
依賴注入(Dependency Injection), 是面向對象編程中的一種設計原則,可以用來減低代碼之間的耦合度。在.NET Core MVC中
我們可以在Startup.cs文件的ConfigureService方法中使用服務容器IServiceCollection注冊接口及其實現類的映射。
例如,當我們需要訪問Http上下文時,我們需要配置IHttpContextAccessor接口及其實現類HttpContextAccessor
那么當我們編寫一個.NET Core控制臺程序的時候,我們該如何使用依賴注入呢?
使用內置依賴注入
在.NET Core中,內置依賴注入模塊使用的程序集是Microsoft.Extensions.DependencyInjection。
所以如果希望在控制臺程序中使用內置依賴注入,我們首先需要使用NUGET添加對Microsoft.Extensions.DependencyInjection程序集的引用。
PM> Install-Package Microsoft.Extensions.DependencyInjection這里為了說明如何使用.NET Core內置的依賴注入模塊, 我們創建以下2個服務接口。
然后我們針對這2個服務接口,添加2個對應的實現類
代碼解釋
BarService類構造函數依賴了一個IFooService接口的實現
FooService類構造函數依賴一個ILoggerFactory接口的實現
FooService中,我們輸出了一個Information級別的日志
在以上實現類代碼中,我們使用了.NET Core內置的日志模塊, 所以我們還需要使用NUGET添加對應的程序集Microsoft.Extensions.Logging.Console
PM> Install-Package Microsoft.Extensions.Logging.Console最后我們來修改Program.cs, 代碼如下
代碼解釋
這里我們手動實例化了一個ServiceCollection類, 這個類是IServiceCollection>接口的一個實現類,它就是一個.NET Core內置服務容器。
然后我們在服務容器中注冊了IFooService接口的實現類FooService以及IBarService接口的實現類BarService。
當時需要從服務容器中獲取接口類的對應實現類時,我們只需要調用服務容器類的GetSerivce方法。
最終效果
運行程序,我們期望的日志,正確的輸出了
使用第三方依賴注入
除了使用內置的依賴注入模塊,我們還可以直接使用一些第三方的依賴注入框架,例如Autofac, StructureMap。
這里我們來使用StructureMap來替換當前的內置的依賴注入框架。
首先我們需要先添加程序集引用。
PM> Install-Package StructureMap.Microsoft.DependencyInjection然后我們來修改Program.cs文件,代碼如下
代碼解釋
這里我們實例化了一個StructureMap的服務容器Container, 并在其Configure方法中配置了接口類及其實現類的自動搜索。這里使用的是一種約定,接口類必須以字母“I”開頭, 實現類的名字和接口類只相差一個字母“I”, 例IFooService,?FooService,?IBarService,?BarService
后續代碼和前一個例子基本一樣。雖然看起來代碼多了很多,但是實際上這種使用約定的注入方式非常強力,可以省去很多手動配置的代碼。
最終效果
運行程序,代碼和之前的效果一樣
原文地址:?https://www.cnblogs.com/lwqlun/p/9736391.html
.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com
總結
以上是生活随笔為你收集整理的如何在.NET Core控制台程序中使用依赖注入的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大型科技公司架构:中台模式的爱与恨
- 下一篇: 在asp.net core2.1中添加中