Замок Виндзорский переходный образ жизни не активируется - PullRequest
1 голос
/ 04 июля 2010

У меня проблема с компонентом в моем контейнере с временным образом жизни.В первый раз, когда я вызываю resol, я ударил конструктор типа реализации, как и ожидалось.

Однако во второй раз, когда я вызываю функцию resol, новый экземпляр не создается.Скорее, существующий экземпляр используется повторно.Я не думаю, что это должно произойти, так как для LifestyleType моего компонента установлено значение Transient (я проверил это во время выполнения в режиме отладки с точкой останова):

Kernel.GetAssignableHandlers(typeof(object))[33].ComponentModel.LifestyleType 
// 33 is the verified index of my component type...this returns Transient as expected

В той же точке останова я запустилв следующем окне и убедитесь, что новый экземпляр не создан:

  Resolve(Kernel.GetAssignableHandlers(typeof(object))[33].Service)
  // this does NOT return a new instance!
  // ...It returns the same instance from the first time Resolve was called. 
  // I can tell by the state of the object and because the constructor on the object is not called.

Обновление:

Думаю, я сузил проблему.

приведенный ниже тест завершается неудачно:

    var container = new WindsorContainer();
    container.Kernel.AddComponent<MyLazyComponentLoader>(typeof (ILazyComponentLoader));

    var instance1 = container.Resolve<MyClass>();
    var instance2 = container.Resolve<MyClass>();

    Assert.AreNotSame(instance1, instance2);

MyLazyComponentLoader просто возвращает Component.For (service)

, который по умолчанию равен Singleton LifestyleType (даже если он отображается как Unknown в ComponentModel.?

Спасибо.

1 Ответ

0 голосов
/ 11 августа 2010

Per Krzysztof Koźmic: Да, стиль жизни по умолчанию - синглтон, Неизвестный означает, что он не указан явно, но Виндзор обрабатывает его так, как если бы вы указали синглтон.Если вы хотите, чтобы это было кратковременным, будьте явными.

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