0

ユニティコンストラクタインジェクションを使用してEF ObjectContextをインジェクトしようとしています。 マイattempは、このようなbootsprapperでタイプを登録することですが:ユニティ:複数のコンストラクタを持つコンストラクタインジェクション

protected override void ConfigureContainer() 
{ 
    base.ConfigureContainer(); 
    Container.RegisterType<ObjectContext, MyObjectContext>(new InjectionConstructor()); 
} 

EFは、私のコードのUnityは私に言っResolutionFailedExceptionをスローデバッグする場合、これらの

public MyObjectContext() : base("name=MyObjectContext", "MyObjectContext") 
public MyObjectContext(string connectionString) : base(connectionString, "MyObjectContext") 
public MyObjectContext(EntityConnection connection) : base(connection, "MyObjectContext") 

のように見えるみとめコンストラクタを作成する「タイプのMyObjectContext長さ1のコンストラクタが複数あります。明確にすることはできません。次のコンストラクターを持つ新しいクラスが解決されたときに発生します。

public MainViewModel(UnityContainer container, MyObjectContext entities) 

は限り引数は、デフォルトのパラメータなしのコンストラクタが呼び出されることを保証として、私はnew InjectionConstructor()RegisterTypeを使用して知っているように(私が欲しいもの厥)。 Unityが期待どおりに型を解決できないのはなぜですか?私は何かが欠けていますか?

よろしく

ジェイ

答えて

3

ご登録が右に見えます。登録コードが呼ばれていることを確認してください。ブレークポイントを置いてみてください。 (トピックオフ?:なぜあなたはあなたのviewmodelにあなたのコンテナを渡している)

+0

それは解決策に私を導いたので、私は答えとしてこれをマーク。私は間違った場所に登録していたので、Unityはタイプを解決するいくつかの問題を抱えていたようです。コンテナを渡したのは、プロジェクト(シェル、モジュール、インフラストラクチャなど)全体で登録されたインスタンス/タイプを解決する必要があると思ったからですが、それは正しい/働く方法ではないようです。 – Jay

関連する問題