2016-09-12 5 views
1

したがって、MyClassViewModelと呼ばれるVMを持つMyClassViewという名前のビューがあり、これらのコンポーネントはIModule実装内に格納されています。私は簡単にMyClassのインスタンスをUnityBootstrapperに登録し、MyClassViewModelのメンバーにインジェクションでそれを取得するよう指示することができます。コレクションとの依存性注入

ブートストラップ

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

ビューモデル

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

シンプルenouigh。さて、私はさらに一歩進んで、同様の注入戦略に従ったのビューを作成したいと考えています。にMyClassの各インスタンスを注入することができます。これは基本的に1つのモジュールを別のモジュールの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"); 

ところで、私は、プロパティインジェクションオーバーコンストラクタ・インジェクションを好みます。プロパティインジェクションはオプションの依存関係のためのものです。