1

我有一个使用 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())

但这似乎不正确。

4

0 回答 0