Виндзор: Как сказать контейнеру освободить DynamicParameters при освобождении компонента? - PullRequest
0 голосов
/ 04 июня 2010
        windsorContainer.Register(
            Component.For<ClassWithReferenceToDisposableService>()
            .LifeStyle.Transient
            .DynamicParameters((k, d) =>
                                                       {
                                                           d["disposableComponent"] =
                                                               windsorContainer.Resolve<DisposableComponent>();
                                                       }));


        windsorContainer.Register(Component.For<DisposableComponent>().LifeStyle.Transient);

        ClassWithReferenceToDisposableService service = windsorContainer.Resolve<ClassWithReferenceToDisposableService>();
        windsorContainer.Release(service);

Когда контейнер освобождает службу, is не избавляется от «одноразового компонента» из-за динамического параметра. Как я могу выбрать во время создания и сказать Windsor, чтобы он высвобождал одноразовый компонент при выпуске услуги?

1 Ответ

1 голос
/ 04 июня 2010

Существует перегрузка на DynamicParameters, которая возвращает делегата. Этот делегат вызывается, когда компонент выпущен, и именно здесь вы можете освободить ваши динамические параметры. См. документацию для примера.

...