我有三个类,例如A
,B
和C
,所以:
A
取决于B
和C
的实例; B
取决于C
的实例; A
和B
都需要共享C
的实例。如何配置容器以通过一次调用Resolve<A>()
正确地连接东西?
答案 0 :(得分:3)
这就是生命周期作用域。如果您将某项注册为单个实例,则它会存在于根生存期范围中,并且所有内容都共享它。如果您为每个生存期范围注册为实例,则在同一范围内解析的所有内容都将共享同一实例。 Tons and tons of doc on this topic including examples.
它当然可以变得更复杂。您可以在手动创建的共享实例中注册lambda。您可以使用Owned<T>
为单个组件创建一个很小的生存期范围...同样,大量文档。我建议您自己做一些实验,以获得良好的工作知识。
如何管理范围取决于您。 You may get some ideas from this doc on handling per-request lifetime scopes.在具有自定义要求的自定义应用中,显然没有“说明性指导”。有些人将工作单元包装在生命周期范围内。有些人将其留给集成软件包,仅使用提供的请求级生存期范围。