我有三个类,比如说,A
和B
,C
所以:
A
取决于 和 的B
实例C
;B
取决于 ; 的一个C
实例- 两者都
A
需要B
共享C
.
如何配置容器以通过一次调用正确连接事物Resolve<A>()
?
我有三个类,比如说,A
和B
,C
所以:
A
取决于 和 的B
实例C
;B
取决于 ; 的一个C
实例A
需要B
共享C
.如何配置容器以通过一次调用正确连接事物Resolve<A>()
?
这就是生命周期范围的用途。如果您将某些内容注册为单个实例,则它位于根生命周期范围内,并且所有内容都共享它。如果您在每个生命周期范围内注册为实例,则在同一范围内解析的所有内容都将共享同一个实例。关于这个主题的大量文档,包括示例。
当然,它可以变得更复杂。您可以使用手动创建的共享实例注册 lambda;您可以使用Owned<T>
为单个组件创建一个很小的生命周期范围......同样,大量的文档。我建议您自己做一些实验以获得良好的工作知识。
如何管理范围取决于您。你可能会从这个文档中得到一些关于处理每个请求生命周期范围的想法。在具有自定义需求的自定义应用中,显然不可能有“规范性指导”。有些人将工作单元包装在生命周期范围内。有些人把它留给集成包,只使用提供的请求级生命周期范围。