Есть ли у Castle Windsor статический класс, аналогичный ObjectFactory в StructureMap? - PullRequest
0 голосов
/ 13 сентября 2010

В настоящее время я делаю переход от StructureMap к Castle Windsor.

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

В обучающих программах, которые я видел для Windsor, экземпляр контейнера всегда создается явно, и разрешение происходит через экземплярэтого контейнера.Является ли это просто различием в подходах между двумя платформами?

Если предположить, что это так, каков рекомендуемый способ обработки случаев, когда разрешение должно происходить отдельно от конфигурации?

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

Ответы [ 3 ]

3 голосов
/ 14 сентября 2010

Нет, это не так.И не будет.Если вы переходите от Структурной карты к замку Виндзор, прочитайте это .

re: как потянуть на более позднюю точку без статического локатора , посмотрите это .

1 голос
/ 13 сентября 2010

Я не знаком с Виндзором, но если у него еще нет своего собственного статического класса фасада, создать свой собственный будет тривиально. Создайте статический класс со статическим свойством, которое содержит настроенный контейнер. Добавьте статический метод, который разрешает экземпляры из этого контейнера. Именно это и делает ObjectFactory. В StructureMap есть объект Container, который выполняет всю реальную работу - ObjectFactory - просто вспомогательная оболочка.

0 голосов
/ 13 сентября 2010

Если вам действительно это нужно, используйте CommonServiceLocator . Он имеет адаптеры для всех основных контейнеров IoC.

...