2016-09-12 3 views
1

따라서 MyClassViewModel이라는 VM이있는 MyClassView이라는보기가 있으며이 구성 요소는 IModule 구현 내부에 있습니다. MyClass의 인스턴스를 UnityBootstrapper으로 쉽게 등록하고 MyClassViewModel 회원에게 주사를 통해 검색하도록 지시 할 수 있습니다.콜렉션이있는 종속성 삽입

부트 스트 래퍼

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

보기 모델

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

간단한 enouigh. 자, 제가 한발 더 나아가서 비슷한 주입 전략을 따르는 에 대한 뷰를 만들고 싶습니다. 또한 의 각 인스턴스를 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, 나는, 재산 주입을 통해 생성자 주입을 선호하는 것입니다. 속성 삽입은 선택적 종속성을위한 것입니다.