我在兩個當前正在進行的項目中使用依賴注入技術。如何在運行時注入對象(初始化後)?
我使用Unity作爲我的IoC框架。
我正在使用一個名爲ComponentBuilder的類來負責創建應用程序對象及其事件訂閱,作爲應用程序初始化的一部分。
應用程序運行後,所有對象都準備就緒,數據從一個對象傳遞到另一個對象。
我的問題是:
某些對象的初始化之後動態創建的,這些對象需要一個已經存在的其他對象。
由於ComponentBuilder已經完成了它的部分,我需要找到一種將所需對象傳遞給這些「動態」對象的方法。這些動態對象實際上是運行時創建的對象的層次結構,層次結構中最深的對象需要層次結構頂部的組件(對象)。
我想到了兩個可能的解決方案(我不喜歡他們兩個):
從ComponentBuilder通過所有對象的容器的動態對象,使他們可以使用並訂閱所需對象。這個選項的主要目的是揭露可以隱藏對象間依賴關係的所有對象。我看到一些人將對象容器傳遞給所有對象,就好像它是一個記錄器或顯示器,我認爲這是錯誤的,並隱藏了我們想要暴露給其他對象的依賴關係。
將所需的對象傳遞給在init時間創建的第一個對象,以便稍後它將對象傳遞給對象層次結構到動態對象。這個選項的主要目標是層次結構中的一些對象不需要這些對象。
你能想出更好的解決方案嗎?
相關:http://stackoverflow.com/questions/1943576/is-there-a-pattern-for-initializing-objects-created-via-a-di-container/1945023#1945023 – 2011-04-05 18:39:34
感謝馬克,相關的真正幫助,並指示我通向其他相關問題的途徑。有時你只需要知道你在尋找什麼...... – 2011-04-06 11:09:33