我有一个使用 Structuremap 设置的 ASP.Net MVC 应用程序,并StructuremapDependencyScope
为每个请求提供一个嵌套容器。
只要自定义生命周期有效,我希望能够建立一个列表并让 StructureMap 返回该列表。
我在 Structuremap 中有以下内容Registry
:
For<List<Cat>>()
.Use(x => x.GetInstance<CatlistBuilder>().Build())
.LifecycleIs<NineLifesLifecyle>();
这很好用,列表List<Cat>
只构建一次,直到生命周期到期。
但是,实例CatlistBuilder
(以及它需要的所有其他依赖项)不会在请求结束时处理。我怀疑原因是自定义生命周期 - 由于配置使用自定义生命周期,IContext
传入 lambda 函数似乎是根容器。如果我删除自定义生命周期,则使用当前的嵌套容器。
是否可以让嵌套容器提供CatlistBuilder
类,并且仍然使用自定义生命周期来获取结果?
我能想出的唯一解决方法是使用
.Use(x => StructuremapMvc.StructureMapDependencyScope.CurrentNestedContainer.GetInstance<CatlistBuilder>().Build())
但这似乎不正确。