Могу ли я охотно создавать экземпляры, зарегистрированные как синглтоны, используя замок Виндзор? - PullRequest
3 голосов
/ 23 июля 2010

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

Обновление:

Я подумал, что некоторые подробности будут полезны здесь:

  1. Эти экземпляры содержат некоторый код инициализации, который было бы выгодно запускать во время запуска, поэтому я заинтересован в этом.
  2. Я регистрирую довольно много таких экземпляров, используя AllTypes.Pick(), поэтому я бы предпочел решение, которое не подразумевало бы отдельного ручного разрешения каждого экземпляра из контейнера после его создания.

1 Ответ

4 голосов
/ 24 июля 2010

Да, вы можете использовать Startable Facility (который поставляется из коробки с Windsor):

container.AddFacility<StartableFacility>(
// optionally in v2.5
f=> f.DeferredStart()
);
container.Register(
   AllTypes.FromThisAssembly()
      .Pick().WhateverYouWant()
      .Configure(c => c.Start());

DeferredStart метод является новым в v2.5 и вы можете увидеть здесь , что он делает и почему его рекомендуется использовать. В примерах используется новый API версии 2.5, но если вы используете версию 2.1, это должно дать вам представление о том, как этого добиться.

В предыдущих версиях метод Start() называется Startable()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...