2010-07-02 55 views
0

這與This question類似,但答案並不能解決我的問題。統一註冊類型映射如果丟失?

我想在代碼中註冊一個接口的默認實現,但能夠在代碼運行之前覆蓋配置中的接口。

我要像做

if (!container.IsImplementationRegistered(typeof(TInterface)) 
{ 
    container.RegisterType<TInterface, TImplementation>(); 
} 

我不能使用TryResolve我將在可能有自己的那些尚未註冊的依賴性一行來登記幾種類型,導致錯誤的覆蓋。

Unity 2.0是否啓用這個功能,或者有沒有辦法在1.2中完成它?

回答

0

也許你可以試試兒童容器。

  1. 代碼
  2. 創建一個容器創建使用CreateChildContainer()子容器
  3. 配置從配置文件
  4. 使用在應用程序中的子容器的子容器讀數。

如果子容器無法解析某個類型,則Unity將轉到父容器進行解析。

+0

如果傳遞給解析和註冊的引用是相同的,那將會容易得多。按照現狀,我必須將孩子交給需要解決的事情,讓父母接受需要註冊的事情。由於我有兩個模塊需要做,他們現在需要兩個引用或特殊代碼來調用註冊表之前獲得父級。無論哪種方式,他們需要知道容器的結構。我想避免這種情況,但是直到我們轉向Unity 2.0或Windsor之前,我們必須這樣做。 – 2010-07-09 09:50:46