IWindsorContainer в качестве параметра к классу

7
задан Mauricio Scheffer 23 March 2009 в 18:44
поделиться

3 ответа

Обычно Вы не хотите вводить контейнер в свои компоненты приложения.

Посмотрите эти вопросы (этим вопросом является почти дубликат их):

BTW: Вы добираетесь IKernel инжекция бесплатно, и можно зарегистрироваться IWindsorContainer:

container.Register(Component.For<IWindsorContainer>().Instance(container));
8
ответ дан 7 December 2019 в 03:21
поделиться

Обычно как сказанный mausch, думайте дважды перед передачей контейнера компоненту. Вам действительно нужен он, чтобы иметь доступ к контейнеру?

Вытягивать зависимости от контейнерного использования ввело фабрики.

1
ответ дан 7 December 2019 в 03:21
поделиться

Недавно у меня был соблазн сделать это. Я хотел иметь возможность создавать несколько экземпляров службы в течение жизни объекта. Регистрация фабрики была бы лучше, так как необходимость в зависимости была бы более очевидной. Но создавать фабрику для каждого сервиса казалось мучением.

В итоге я использовал что-то похожее на код из этой статьи: http://mikehadlow.blogspot.com/2010/01/10-advanced-windsor-tricks-1a-delegate.html. Предположим, у вас есть класс, которому нужно создавать экземпляры IService. В статье описывается техника, позволяющая вашему классу иметь зависимость от Func, и вы автоматически получите фабрику, специфичную для этого класса.

0
ответ дан 7 December 2019 в 03:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: