2

Я относительно знаком с концепциями контейнеров DI/IOC, которые ранее работали над проектами, когда их использование уже было на месте. Однако для этого нового проекта нет существующей структуры, и я должен выбрать ее.Связывание с несколькими конкретными реализациями с каркасами IOC?

Короче говоря, существуют некоторые сценарии, в которых мы будем настраивать несколько реализаций для данного интерфейса. Оглядываясь вокруг Интернета, кажется, что использование любой из основных фреймворков для выборочного связывания с одной из реализаций довольно просто.

Есть, однако, контексты, где нам нужно запустить ВСЕ настроенные реализации. Я просмотрел все помеченные мной теги IOC, и я пытаюсь вылить документацию по основным фреймворкам (пока что смотрю на Unity, Ninject и Windsor), но документы часто разрежены, и у меня нет времени проверять источник для всех пакетов.

Итак, существуют ли какие-либо основные контейнеры IOC, которые позволят мне привязать ко всем сконфигурированным конкретным типам для одной из моих служб?

ответ

3

Одна вещь, которая поймала меня в первый раз, когда я пытался разрешить все реализаций зарегистрированного типа в том, что (по умолчанию) типа не-имени регистрации будет не быть возвращены при вызове ResolveAll(). Возвращаются только именованные экземпляры.

Итак:

IUnityContainer container = new UnityContainer(); 
container.RegisterType<IMyInterface, MyFirstClass>(); 
container.RegisterType<IMyInterface, MySecondClass>("Two"); 
container.RegisterType<IMyInterface, MyThirdClass>("Three"); 

var instances = container.ResolveAll<IMyInterface>(); 

Assert.AreEqual(2, instances.Count, "MyFirstClass doesn't get constructed"); 
0

Так что я как-то пропустил этот мой первый проход, посмотрев через Единство как-то ... но я отвечу на свой вопрос.

Единство имеет именно то, что я хотел. http://msdn.microsoft.com/en-us/library/cc440943.aspx

Кроме того, для всех, кто занимается охотой и танцами МОК, как и я, эта ссылка оказалась неоценимой. http://blog.ashmind.com/index.php/2008/09/08/comparing-net-di-ioc-frameworks-part-2/

Смежные вопросы