Поделиться экземпляром Castle Windsor Singleton между несколькими компонентами - PullRequest
0 голосов
/ 11 октября 2011

Я хочу быть в состоянии сделать это:

<component id="Component1" service="Foo.IFoo, Foo" type="Foo.Bar, Foo" lifestyle="singleton" />
<component id="Component2" service="Foo.IFoo, Foo" type="Foo.Bar, Foo" lifestyle="singleton" />

Так, что когда я сделаю это:

IFoo foo = m_container.Resolve<IFoo>("Component1");

Или это:

IFoo foo = m_container.Resolve<IFoo>("Component2");

..Я получаю один и тот же экземпляр-одиночка, а не отдельный экземпляр для каждого компонента.

Возможно ли это?

Спасибо.

1 Ответ

0 голосов
/ 13 октября 2011

Если все, что у вас есть, это интерфейс «Имя» во время выполнения, как вы планируете вызывать универсальный метод Resolve <> для контейнера windsor? Если вы действительно хотите только один экземпляр IFoo, независимо от составляющей «Имя», просто зарегистрируйте один экземпляр и вызовите:

IFoo foo = m_container.Resolve<IFoo>();

Если вы хотите, чтобы несколько интерфейсов возвращали один и тот же компонент, вы можете посмотреть, используя типы Forward.

...