2012-04-15 85 views
2

我正在學習如何使用棱鏡導航API,它需要註冊您的Views(或ViewModels如果使用視圖模型一)用以下方式統一容器:棱鏡導航:在哪裏註冊View/ViewModels與UnityContainer?

Container.RegisterType<object, HomeView>("HomeView"); 

this blog postMSDN Documentation。我看到的例子已經通過ConfigureContainer()方法在Bootstrapper類中註冊了這些類型。但是一些示例在Module類中註冊了類型。我的問題是:它與你的容器註冊這些類型有關係嗎?

我的直覺是在BootstrapperConfigureContainer()方法會使註冊類型適用於所有Modules而在Module班報名將意味着這些類型只在Module註冊的註冊。

回答

4

簡答:不,它不會在你註冊的地方。

註冊實例在合適的庫中是合乎邏輯的。團結也有點不同。

示例1: 假設您有ModuleA和ModuleB,並且您將在基礎結構中有一個接口。您將此接口註冊到ModuleA中的實現。然後你在moduleB中解析這個實例。它會工作,因爲你有它在moduleA配置。如果你沒有,那麼例2就是給你的。

例2: 假設你有一個未註冊類型的ClassA。您沒有在bootstrappermodule中對此進行配置,並且您調用此類的解決方案。 Unity爲你自動完成並解決它,如果他能找到它,它甚至可以解決依賴關係。可能有一個例外。我不確定接口,我相信如果它沒有註冊到具體的實現它不能解決它。

+0

謝謝!好答案。這是我認爲會發生的事情。 – 2012-04-16 23:43:29