2014-03-28 55 views
1

我正在使用Unity的DI容器的模塊化應用程序。在啓動過程中,應用程序將一個擴展(稱爲MyUnityExtension)添加到統一容器。統一子容器和擴展

現在,我正在尋找添加一個新的模塊到應用程序,使用它自己的統一容器(我假設的父級的孩子),並讓該子容器沒有定義的擴展。

  1. 如果我創建父容器的子容器,子容器是否也會繼承MyUnityExtension?我搜索並發現了一些舊信息,表明它不會但想確認。

  2. Unity有一個功能,即使沒有註冊類,你也可以請求一個依賴於這些類的具體類型的實例,而Unity會計算出如何創建它們並給你實例(發現信息here )。在我的新模塊中,我希望Unity只檢查之前創建的子容器,而不考慮父容器。我看不出有什麼辦法可以在Unity中獨立解決這個問題(因爲這個類尚未註冊),我不知道如何在子容器存在時更改這個過程。

我是新來的團結,所以不知道這是否可能。

+0

如果你不婉爲什麼使用子容器('CreateChildContainer()')而不是僅僅使用一個新的容器('new UnityContainer()')?使用兒童容器有什麼好處,你在找什麼? – Lukazoid

回答

0

OK so firstoff here是一個非常好的Unity教程。

然後
當你創建一個子容器,這是確切的,但如果你想確保有在IUnityContainer定義的方法稱爲RemoveAllExtensions AFAIK。這種方法也刪除了所有的擴展默認的。所以在這之後,你將不得不使用你的擴展配置容器,也許你需要默認的容器。
這也是你的第二點。使用擴展,您基本上可以將任何邏輯插入到UnitContainer生命週期中,例如。處理resolveing不同等 如果您想了解更多關於擴展這裏有一些鏈接:

希望得到您的正確的軌道;)