0

Unityコンストラクターインジェクションを使用してEFObjectContextをインジェクトしようとしています。私の試みは、次のようにブートスラッパーにタイプを登録することです。

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

EFは、次のような複数のコンストラクターを作成します

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

コードをデバッグするとき、UnityはResolutionFailedExceptionをスローして、「タイプMyObjectContextには長さ1のコンストラクターが複数あります。曖昧さを解消できません。」次のコンストラクターを持つ新しいクラスが解決されたとき。

public MainViewModel(UnityContainer container, MyObjectContext entities)

私が知る限り、RegisterTypewithnew InjectionConstructor()引数を使用すると、デフォルトのパラメーターなしコンストラクターが呼び出されます(これが私が望むものです)。Unityが期待どおりにタイプを解決できないのはなぜですか?私は何かが恋しいですか?

よろしくお願いします

ジェイ

4

1 に答える 1

3

あなたの登録は正しく見えます。登録コードが呼び出されていることを確認しますか?ブレークポイントを設定してみてください。

(オフトピック:なぜコンテナをビューモデルに渡すのですか?)

于 2011-07-11T03:28:29.960 に答える