首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

Unity 依賴注入基礎(上):建構子注入與自動/標註模式

     編輯:關於.NET

依賴注入與控制反轉

DI (Dependency Injection) ≠ IoC (Inversion of Control)。推薦閱讀 Martin Fowler《Inversion of Control Containers and the Dependency Injection pattern》或呂震宇《你真的了解 IoC 與 AOP 嗎?》系列。

準備介面與類別

參考前文《Unity(三):快速入門》與《Unity(五):單例模式》中的 IOrder、CommonOrder、VipOrder、ILogger、ConsoleLogger、NullLogger 及 IOrderWithLogging。

IOrderWithLogging 介面

Unity 支援三種注入方式

  1. 建構子注入
  2. 屬性注入
  3. 方法注入

建構子注入

單一建構子:自動注入

目標類別 SingleConstructor 僅有一個建構子,參數為 IOrder、ILogger,容器自動解析注入。

SingleConstructor 類別

測試:註冊 CommonOrder 為單例並設 Discount=0.8 驗證共享實例。

單一建構子測試碼 單一建構子輸出

多重建構子:標註注入

目標類別 MultipleConstructor 有兩個建構子,帶參數者標註 [InjectionConstructor]。

MultipleConstructor 類別

測試:換用 VipOrder、NullLogger、MultipleConstructor。

多重建構子測試碼 多重建構子輸出

重要規則

若多建構子未標註 [InjectionConstructor],Unity 會自動選擇參數最多者;若參數最多者不唯一,執行期拋出例外。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved