我有一个使用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())
但这似乎不正确。