В чем разница между IContainer Prism и IUnityContainer?

У меня есть проект Prism с кодом, который я получил из разных источников, все работает довольно хорошо, но я заметил, что в некоторых модулях я внедряю

IContainer container

и в других модулях я ввожу

IUnityContainer container

У IContainer есть только Components, Add и Remove, тогда как у IUnityContainer есть десятки методов.

Я часто меняю IContainer на IUnityContainer, чтобы использовать методы разрешения последнего. В чем разница между ними и зачем мне использовать IContainer?


person Edward Tanguay    schedule 21.07.2009    source источник


Ответы (1)


На самом деле это две разные вещи с разными целями.

IUnityContainer — это контейнер для внедрения зависимостей, который поддерживает все, что вам нужно сделать в сценарии внедрения зависимостей / размещения службы, например BuildUp, Resolve, Register и т. д. Вы можете прочитать больше о Unity (который на самом деле является частью Enterprise библиотеки и используется CAG), перейдя по ссылке: Unity на Codeplex

IContainer используется для создания универсального контейнера для объектов, которые являются IComponents. Он используется рядом компонентов и находится в .NET Framework в System.ComponentModel. Он не имеет прямого отношения к Unity или CAG. Я бы посчитал это чем-то более специфичным для Windows Forms и менее WPF, хотя вы можете косвенно использовать IComponents в WPF. IContainer

При любом внедрении зависимостей вы должны использовать IUnityContainer, а не IContainer.

person Anderson Imes    schedule 21.07.2009