Зарегистрировать именованный экземпляр в ObjectFactory - PullRequest
3 голосов
/ 14 сентября 2011

Я пытаюсь зарегистрировать именованные экземпляры в карте структуры. Но мои испытания не увенчались успехом.

Какой правильный путь?

В настоящее время я делаю это так:

IService bus = CreateInstanceOfServiceBus();
ObjectFactory.Configure(cfg => cfg.For<IServiceBus>()
                                  .AddInstances(x =>x.IsThis(bus)
                                  .Named("foobar"))
                                  .Singleton());

Но когда я пытаюсь получить именованный экземпляр, ничего не получается:

ObjectFactory.TryGetInstance<IServiceBus>("foobar");

Заранее спасибо. С наилучшими пожеланиями.

Joachim

1 Ответ

6 голосов
/ 14 сентября 2011

Вы можете просто зарегистрироваться следующим образом

IServiceBus bus = CreateInstanceOfServiceBus();
ObjectFactory.Initialize(x => x.ForSingletonOf<IServiceBus>().Use(bus).Named("bus")); 

Теперь вы можете разрешить экземпляр следующим образом:

ObjectFactory.GetNamedInstance<IServiceBus>("bus");

или

ObjectFactory.TryGetInstance<IServiceBus>("bus");

Вы используете Настроить метод , который просто добавляет другую конфигурацию в контейнер.Подумайте, изменится ли вы на Инициализировать , что инициализирует новую конфигурацию.

...