Нужен ли мне единственный экземпляр контейнера Unity? - PullRequest
4 голосов
/ 06 февраля 2011

Извините за этот нубский вопрос.Я начинаю использовать контейнер Unity 2.0 с Silverlight и помещаю в него некоторые синглтоны.Чтобы синглеты работали, мне нужно иметь только один экземпляр контейнера в моем приложении?Я предполагаю, что создание нового экземпляра контейнера для единства всякий раз, когда я захочу найти мои синглтоны, приведет к созданию отдельных контейнеров с отдельными синглетонами.

Спасибо, -Jon

Ответы [ 2 ]

10 голосов
/ 06 февраля 2011

Вам нужен один экземпляр контейнера для достижения одноэлементного поведения. Также вам необходимо зарегистрировать ваши синглтон-классы в ContainerControlledLifetimeManager.

9 голосов
/ 06 февраля 2011

Это немного сбивает с толку, потому что когда мы ссылаемся на Singletons в терминологии DI , мы не имеем в виду то же самое, что Singleton design pattern .

В основном Singleton Lifestyle ведет себя как (шаблон) Singleton в том же контейнере , но если вы создадите и используете его из нового экземпляра контейнера, вы получите другой экземпляр.

Вы можете сказать, что Singleton Lifetime является локально ограниченным Singleton.

Чтобы подвести итог использования контейнера, вам не нужен Singletonконтейнер, но вам нужен экземпляр одного контейнера , чтобы использовать Singleton Lifestyle.

Чтобы сделать вещи более запутанными, в Unity стиль жизни Singleton называется ContainerControlledLifetimeManager ...

...