最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

在.NET Core控制臺程序中如何使用依賴注入詳解

來源:懂視網(wǎng) 責編:小采 時間:2020-11-27 22:34:45
文檔

在.NET Core控制臺程序中如何使用依賴注入詳解

在.NET Core控制臺程序中如何使用依賴注入詳解:背景介紹 Dependency Injection:又稱依賴注入,簡稱DI。在以前的開發(fā)方式中,層與層之間、類與類之間都是通過new一個對方的實例進行相互調(diào)用,這樣在開發(fā)過程中有一個好處,可以清晰的知道在使用哪個具體的實現(xiàn)。隨著軟件體積越來越龐大,邏輯越來越復雜,
推薦度:
導讀在.NET Core控制臺程序中如何使用依賴注入詳解:背景介紹 Dependency Injection:又稱依賴注入,簡稱DI。在以前的開發(fā)方式中,層與層之間、類與類之間都是通過new一個對方的實例進行相互調(diào)用,這樣在開發(fā)過程中有一個好處,可以清晰的知道在使用哪個具體的實現(xiàn)。隨著軟件體積越來越龐大,邏輯越來越復雜,

使用第三方依賴注入

除了使用內(nèi)置的依賴注入模塊,我們還可以直接使用一些第三方的依賴注入框架,例如Autofac, StructureMap。

這里我們來使用StructureMap來替換當前的內(nèi)置的依賴注入框架。

首先我們需要先添加程序集引用。

PM> Install-Package StructureMap.Microsoft.DependencyInjection

然后我們來修改Program.cs文件,代碼如下

using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using StructureMap;
using System;

namespace DIInConsoleApp
{
 class Program
 {
 static void Main(string[] args)
 {
 var services = new ServiceCollection().AddLogging();

 var container = new Container();
 container.Configure(config =>
 {
 config.Scan(_ =>
 {
 _.AssemblyContainingType(typeof(Program));
 _.WithDefaultConventions();
 });

 config.Populate(services);
 });

 var serviceProvider = container.GetInstance<IServiceProvider>();

 serviceProvider.GetService<ILoggerFactory>().AddConsole(LogLevel.Debug);

 var logger = serviceProvider.GetService<ILoggerFactory>().CreateLogger<Program>();
 logger.LogInformation("Start application.");

 var bar = serviceProvider.GetService<IBarService>();
 bar.DoSomeRealWork();

 logger.LogInformation("All done!");
 Console.Read();
 }
 }
}

代碼解釋

  • 這里我們實例化了一個StructureMap的服務容器Container, 并在其Configure方法中配置了接口類及其實現(xiàn)類的自動搜索。這里使用的是一種約定,接口類必須以字母“I”開頭, 實現(xiàn)類的名字和接口類只相差一個字母“I”, 例IFooService, FooService, IBarService, BarService
  • 后續(xù)代碼和前一個例子基本一樣。雖然看起來代碼多了很多,但是實際上這種使用約定的注入方式非常強力,可以省去很多手動配置的代碼。
  • 最終效果

    運行程序,代碼和之前的效果一樣

    info: DIInConsoleApp.Program[0]
          Start application.
    info: DIInConsoleApp.FooService[0]
          Doing the thing 0
    info: DIInConsoleApp.FooService[0]
          Doing the thing 1
    info: DIInConsoleApp.FooService[0]
          Doing the thing 2
    info: DIInConsoleApp.FooService[0]
          Doing the thing 3
    info: DIInConsoleApp.FooService[0]
          Doing the thing 4
    info: DIInConsoleApp.FooService[0]
          Doing the thing 5
    info: DIInConsoleApp.FooService[0]
          Doing the thing 6
    info: DIInConsoleApp.FooService[0]
          Doing the thing 7
    info: DIInConsoleApp.FooService[0]
          Doing the thing 8
    info: DIInConsoleApp.FooService[0]
          Doing the thing 9
    info: DIInConsoleApp.Program[0]
          All done!

    本篇源代碼 (本地下載)

    總結

    聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    在.NET Core控制臺程序中如何使用依賴注入詳解

    在.NET Core控制臺程序中如何使用依賴注入詳解:背景介紹 Dependency Injection:又稱依賴注入,簡稱DI。在以前的開發(fā)方式中,層與層之間、類與類之間都是通過new一個對方的實例進行相互調(diào)用,這樣在開發(fā)過程中有一個好處,可以清晰的知道在使用哪個具體的實現(xiàn)。隨著軟件體積越來越龐大,邏輯越來越復雜,
    推薦度:
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top