Как зарегистрировать один и тот же тип дважды с разными конструкторами в Unity? - PullRequest
3 голосов
/ 15 мая 2009

Я пытаюсь зарегистрировать один и тот же тип, но с двумя разными конструкторами. Когда я пытаюсь разрешить, я получаю « Разрешение зависимости не удалось » на втором разрешении.

    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

Что я делаю не так?

1 Ответ

6 голосов
/ 15 мая 2009

Вам необходимо дать им имена при регистрации. Параметр Resolve - это имя нужного вам экземпляра.

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");
...