程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> 深入Unity 1.x依賴注入容器之三:獲取對象

深入Unity 1.x依賴注入容器之三:獲取對象

編輯:關於.NET

通過前二部分的學習,對象的獲取已非常簡單,在此對前面用過的對象獲取方法進行總結 ,同時對還沒有使用過的方法進行補充。

Unity 容器中獲取對象的方法也包括了泛型方法和對之對應的非泛型重載,在此,僅對泛型方法進行描述。

根據類型獲取對象

我們使用方法 Resolve<T>( ) 來根據類型獲取對象。這種方法是在前二部分使用最多的,用於獲取注冊的默認類型映射的對象。示例代碼如下所示:

根據類型和名稱獲取對象

在此使用方法 Resolve<T>(string name) 來根據類型和名稱獲取對象。此方法用於獲取注冊了命名類型映射的對象。示例代碼如下所示:

獲取指定類型的所有對象

要獲取指定類型的所有對象,我們可以使用 Unity 中的 ResolveAll<T>( ) 方法。比如,在獲取系統中已注冊的所有插件時,這將非常有用。

注意:此方法僅能獲取命名類型注冊映射的對象。

示例代碼如下:

將依賴注入已有的對象

在現實環境中,我們經常無法控制某些對象的創建過程,如 ASP.NET 的頁面,但已需要將依賴注入到這些對象。在這種情況下,我們就可以使用 BuildUp<T>(T existing) 方法對應用指定類型的依賴。

我們用一個簡單的方法來模擬這種情況:

從上面的代碼中我們可以看到,假如 tel 是在方法外被創建的話,通過使用 BuildUp 方法後,依賴就被自動應用到了 tel 對象上。

注意:BuildUp 方法僅能適用屬性注入和方法調用注入,因為它不執行請求對象的構造函數。

小結

在本文中,我們簡單描述了對象獲取的幾種方法,可以看出,使用 Unity 容器在注冊類型映射後,對象的獲取是非常簡單的。

本文配套源碼

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved