3

同じ型を登録しようとしていますが、2 つの異なるコンストラクターを使用しています。解決しようとすると、2 番目の解決で「依存関係の解決に失敗しました」と表示されます。

    var container = new UnityContainer();

    container.RegisterType<IBar, Bar>()
        .RegisterInstance(new Bar())
        .RegisterType<IBar, Bar>()
        .RegisterInstance(new Bar("foo"));

    Bar bar1 = (Bar)container.Resolve<IBar>();
    Bar bar2 = (Bar)container.Resolve<IBar>("foo");  // ERROR

私が間違っていることは何ですか?

4

1 に答える 1

6

登録時に名前を付ける必要があります。パラメータ toResolveは、必要なインスタンスの名前です。

var container = new UnityContainer();

container
    .RegisterInstance<IBar>("BAR", new Bar())
    .RegisterInstance<IBar>("FOOBAR", new Bar("foo"));

Bar bar1 = (Bar)container.Resolve<IBar>("BAR");
Bar bar2 = (Bar)container.Resolve<IBar>("FOOBAR");
于 2009-05-15T19:44:55.783 に答える