在Lambda函数

时间:2017-11-07 15:51:09

标签: asp.net-mvc dependency-injection ioc-container structuremap structuremap4

我有一个使用Structuremap设置的ASP.Net MVC应用程序,StructuremapDependencyScope为每个请求提供一个嵌套容器。

我希望能够构建一个列表并让StructureMap返回该列表,只要自定义生命周期有效。

我在结构图Registry中有以下内容:

For<List<Cat>>()
    .Use(x => x.GetInstance<CatlistBuilder>().Build())
    .LifecycleIs<NineLifesLifecyle>();

这很好用,列表List<Cat>只构建一次,直到生命周期到期。

但是,CatlistBuilder的实例(以及它需要的所有其他依赖项)不会在请求结束时处理。我怀疑原因是自定义生命周期 - 由于配置使用自定义生命周期,传递给lambda函数的IContext似乎是根容器。如果我删除自定义生命周期,则使用当前嵌套容器。

是否可以让嵌套容器提供CatlistBuilder类,并且仍然为结果使用自定义生命周期?

我能想到的唯一解决方法是使用

.Use(x => StructuremapMvc.StructureMapDependencyScope.CurrentNestedContainer.GetInstance<CatlistBuilder>().Build())

但这似乎不正确。

0 个答案:

没有答案