2017-02-19 5 views
0

私はエラーがあります: "登録できません:複数のコンストラクタがList`1にありますが、どれもPreferredConstructorでマークされていません。 PS:私はリスト「のIListを」registreしようとすると、私はこのエラーを得たが、私はこのように私のインターフェイスを登録するとき:MVVM光simpleIocのコンストラクタ・インジェクション

SimpleIoc.Default.Register < IEmployee , Employee >(); 

それが正常に動作し、任意のアイデアはどのようにリストを登録するには?事前

+2

あなたがここに物事を混合しています。 DIコンテナ(一般にDI)は、DTOやエンティティを構築するためのものではありません。これは、アプリケーションコンポーネントのグラフ、すなわちそのアプリケーションの動作を含むクラスを構築することを意味する。 'ShowEmployeeViewModel'はDTOで、' IEmployee'はエンティティです。あなたのコンテナにそれらを登録しないでください。 – Steven

答えて

2

で おかげで、IListインターフェースをマップごShowEmployeeViewModelクラスのファクトリを使用しないでください:

SimpleIoc.Default.Register(() => new ShowEmployeeViewModel(new List<IEmployee>())); 
+0

それは動作しますが、Dependency Injectionの目的を破ることはできません。どのようにしてそのインタフェースに対して型を登録できますか?ありがとう –

+0

特定のタイプに対してジェネリックリストをマッピングしません。これは、さまざまな種類の汎用リストを使用できるようにしたいので意味がありません。ビューモデルインターフェースをマップすることができます。 IShowViewModelを具体的なビューのモデルタイプに対して実装していますが、これは別の話です.SelectionEmployeeViewModelクラスはインターフェイスも実装していないため、ここでは適用できません。 – mm8

+0

ご協力いただきありがとうございます –

関連する問題