如何防止Structuremap嵌套容器部署实例

时间:2014-03-11 17:42:28

标签: structuremap

我正在使用“每个请求的嵌套容器”模式。它包含在一个使用块中,因此嵌套容器在处理请求后被释放。这会导致嵌套容器创建的所有实例也在请求结束时处理。

这很有效,通常正是我想要发生的事情。但是我遇到了一个用例,在这个用例中我不希望处理一个特定的实例,而其他一切都是。

我尝试显式删除using块底部的实例,如下所示:

using (var nestedContainer = _container.GetNestedContainer())
{
    nestedContainer.Configure ( x => 
        x.For<IFoo>()
        .Use(getFooForRequest())
    );

    var handler = (IRequestHandler) nestedContainer.GetInstance(handlerType);

    handler.execute(....)

    nestedContainer.EjectAllInstancesOf<IFoo>();
}

不幸的是,似乎EjectAllInstancesOf也在调用dispose。

我的应用程序有几个不同的IFoo实例,它们都需要在应用程序的整个生命周期中存在。但是,传入的请求需要与IFoo的一个特定实例动态关联。

如上所述将它注入嵌套容器中实现了这个目标,但是我的IFoo正在处理嵌套容器,这很糟糕。

那么如何阻止IFoo的处置,同时还要让它处理其他所有内容?

如果那是不可能的,还有其他方法可以通过nested.Configure()手动注入来动态选择我的每个请求的IFoo吗?

0 个答案:

没有答案