2016-09-12 109 views
1

因此,可以說我有一個名爲MyClassView的視圖,其虛擬機名稱爲MyClassViewModel,這些組件位於IModule實現中。我可以輕鬆地將MyClass的一個實例註冊到UnityBootstrapper,並指示MyClassViewModel的成員通過注入來檢索它。依賴注入與集合

引導程序

this.Container.RegisterInstance<MyClass>("MyClass", new MyClass()); 

視圖模型

[Dependency("MyClass")] 
public MyClass MyClass { get; set; } 

簡單enouigh。現在,假設我想更進一步,創建一個遵循類似注入策略的視圖MyClassCollection,但也允許我將MyClass的每個實例注入到MyClassView中,實質上使用一個模塊作爲另一個模塊的ItemTemplate

我該怎麼辦?感謝您的建議。

回答

0

Unity將會愉快地將給定接口的所有命名註冊注入到該接口的數組中。

internal class MyCollectionViewModel 
{ 
    public MyCollectionViewModel(IItem[] theItems) 
    { 
     // use theItems to fill your collection of ItemViewModels... 
    } 
} 

的項目必須註冊界面,當然:

Container.RegisterType<IItem, MyClass>("model 1"); 
Container.RegisterType<IItem, SomeOtherClass>("model 2"); 

BTW,我更喜歡構造函數注入對財產注射,因爲你不得不填寫相關性。屬性注入用於可選的依賴項。