2018年5月7日 星期一

DI—Dependency Injection 依賴注入 超超簡單說明

 一般是用來解決「耦合性(相依)過高」的問題
通常都會搭配介面 interface 進行注入
讓程式保留彈性
便於在新的需求發生時
能便於抽換
下面我舉個例子


  1. ///
  2. /// Logger 的介面
  3. ///
  4. public interface ILogger
  5. {
  6. void Print(string msg, Color color);
  7. }
  8. ///
  9. /// 預設的 Console Logger
  10. ///
  11. public class ConsoleLogger : ILogger
  12. {
  13. public void Print(string msg, Color color)
  14. {
  15. System.Console.WriteLine(msg);
  16. }
  17. }
  18.  
這種繼承同一介面 interface 的手法,就叫做注入 這種手法可以簡單的利用繼承同一介面 實做自己須要的程式內容 一般都會透過 DI Container 集中註冊方式 統一管理所有DI元件 例如:Autofac 想瞭解 Autofac 可以到看看這個網頁:超簡單一分鐘學會 DI 框架 AutoFac

超簡單一分鐘學會 DI 框架 AutoFac

DI—Dependency Injection 依賴注入

安裝 AutoFac 的 NuGet 套件

  1. static void Main(string[] args)
  2. {
  3. // 註冊繼承 interface 的子類別
  4. var builder_ = new ContainerBuilder();
  5. builder_.RegisterTypeMylogger>().AsIlogger>();
  6. // 取得繼承 interface 的子類別
  7. var container_ = builder_.Build();
  8. var logger = container_.ResolveIlogger>();
  9. }

整理一下,簡單的說:

1. ContainerBuilder.Register 註冊繼承 interface 的子類別
 2. Container.Resolve 取得繼承 interface 的子類別 

AutoFac 功能非常強大,上面程式碼只是入門

Visual Studio 2017/2019 推薦的擴充功能與更新

參考文章: 覺得 Google 的 Blogger 不太順手?透過 HTML 的 iframe 移花接木 HackMD