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

來源:互聯網
上載者:User
原文連結:http://www.doriandeng.cn/archives/99.html

 

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

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

根據類型擷取對象

我們使用方法 Resolve<T>( ) 來根據類型擷取對象。這種方法是在前二部分使用最多的,用於擷取註冊的預設類型映射的對象。範例程式碼如下所示:

根據類型和名稱擷取對象

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

擷取指定類型的所有對象

要擷取指定類型的所有對象,我們可以使用 Unity 中的 ResolveAll<T>( ) 方法。比如,在擷取系統中登入的所有外掛程式時,這將非常有用。

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

範例程式碼如下:

將依賴注入已有的對象

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

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

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

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

小結

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

原始碼下載

look-into-unity-1-1-resolveobject.zip


希望對您有所協助!

鄧明

理想&美人

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.