What is Dependency Injection?

這裡使用 Asp.Net Core (C#) 作範例:
  • What is Dependency Injection(DI) ?
    • 當一個 object (一定要是 object) 當作參數傳入一個 function 的時候, 這個過程就叫做 Dependency Injection.
  • 範例 :
  • 可以看到 ShopController 的 constructor 有 2 個參數, 一個是 Database connection, 另外一個是 configuration, 這 2 個的 data type 都是 Object, 所以當這 2 個參數傳進來的時候, function 才會決定要做什麼樣的事, 如果使用 Asp.Net Core 使用 DI, 通常程式設計師會把要 inject 的 instance variable 會有 _(下底線) 的標示
  • 另外一個可以比較好理解的例子是假如我給你一把斧頭, 並叫你去工作, 那你會拿那一把斧頭拿去砍, 而不會拿去切, 但是如果我給你的是一個鋸子, 那你會拿那一個鋸子拿去切, 而不是用鋸子去砍東西, 所以對應在程式碼上, 你 = ShopController, 傳進去的參數可能會是鋸子或者是斧頭, 你一開始並不知道, 你只知道的是如果拿到的是鋸子, 就用鋸的, 拿到斧頭, 就用砍的, 所以你(ShopController) 會根據當時所傳入的工具(參數) 作相對應的事情, 這就是 Dependency Injection.

  • 這一個例子就不是 Dependency Injection, 因為著一個傳進去的參數是一個值(value), 而不是一整坨的 Object

留言

這個網誌中的熱門文章

ASP.NET Web API - DTOs

Scaffold Identity into the Current Project

Passing data from controller to the view