iT邦幫忙

2022 iThome 鐵人賽

DAY 20
0
Software Development

.NET Core與React組合開發技系列 第 20

.NET Core與React組合開發技_第20天_Dependency Injection觀念

  • 分享至 

  • xImage
  •  

依賴注入(Dependency Injection)

在asp.net core DI框架 提供了一種在一個地方設置各種類等的方法,然後
在應用中任何地方使用它們。

例如,假設您想從您的一個控制器發送一封電子郵件。
您可以在控制器本身中編寫所有電子郵件發送代碼,
但這會使您的控制器很快變得臃腫,並且還使它負責不止一項工作;即:

處理傳入的請求並返迴響應
發電子郵件!
如果我們到處都這樣做,我們最終會得到非常長的控制器,並且幾乎沒有機會在我們的應用程序中重用關鍵代碼(當我們想從其他地方發送不同的電子郵件時會發生什麼?)

最好是使用該電子郵件發送代碼並將其拉出到自己的服務中(換言之,將其放入另一個類)。

public class Email {
    
    public void Send(string to, strong from, string subject){
        // send email here
    }
    
}

已經將電子郵件發送邏輯巧妙地封裝在一個類中
如何在控制器中使用它呢?
這時就需要藉由"依賴注入"
如果我們使用內置的 ASP.NET 核心 DI 框架註冊我們的類,我們可以通過C#該服務類別建構子
自動將它帶入我們的控制器

public class MyController {
    
    private Email email;
    
    public MyController(Email email){
        this.Email = email;
    }
    
    public IActionResult SendEmail(string to, string from, string subject){
        email.Send(to, from, subject);
    }
    
}

由於我們使用的 EF Core,也可以藉由 DI 引入我們的DB上下文。

public class ProductService {
    private readonly StoreContext dbContext;
    
    public ProductService(StoreContext dbContext){
        this.dbContext = dbContext;
    }
}

更詳細DI觀念可參考
Dependency Injection原理與實踐(一)
https://coolmandiary.blogspot.com/2020/11/dependency-injection.html


上一篇
.NET Core與React組合開發技_第19天_進行DB Migration
下一篇
.NET Core與React組合開發技_第21天_重構ProductService採用efcore
系列文
.NET Core與React組合開發技30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言