Замок Виндзор, выпускающий компоненты - PullRequest
0 голосов
/ 03 января 2011

EDIT:

Я перефразировал вопрос, поскольку смог упростить свою проблему до следующего:

        var container = new WindsorContainer();

        container.Register(Component.For<IFoo>().ImplementedBy<Foo>().LifeStyle.Singleton);
        var foo = container.Resolve<IFoo>();
        container.Kernel.ReleaseComponent(foo);
        var foo2 = container.Resolve<IFoo>();

        Assert.IsTrue(foo != foo2) // this fails

public interface IFoo : IDisposable { }

public class Foo : IFoo {
    public void Dispose()
    {

    }
}

Я, должно быть, делаю что-то действительно глупое ... любая идея, что?

По сути, я пытаюсь добиться того, чтобы все разрешения компонента возвращали один и тот же экземпляр в течение некоторого периода времени (область действия). Если есть лучший способ сделать это, я, безусловно, открыт для этого.

EDIT: Итак, я RTFM, и, видимо, это дизайн. Является ли лучший способ добиться того, чего я хочу здесь, по-прежнему менеджер по индивидуальному образу жизни?

Спасибо.

1 Ответ

3 голосов
/ 04 января 2011

Ваш Foo равен PerThread.Это означает, что вы получите новый экземпляр ... если вы запросите его в другом потоке.Если я вас правильно понимаю, проблема в выбранном вами стиле жизни, а не в том, как вы выпускаете компоненты.

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