ContainerControlledLifetimeManager和HierarchicalLifetimeManager之间的主要区别是什么?

Jos*_*man 11 dependency-injection inversion-of-control unity-container

ContainerControlledLifetimeManager和HierarchicalLifetimeManager之间的一般区别是什么?我知道ContainerControlledLifetimeManager表示单例,即DI容器将为每个需要依赖的类型创建一个新实例.我阅读了有关理解终身经理的有用文章.我将容器创建的实例的哈希码与不同的生命周期管理器进行了比较.如果我使用ContainerControlledLifetimeManager,每个请求都有相同的实例,但是当我使用HierarchicalLifetimeManager时,我得到了不同的哈希码.正如文章中所写,每个子容器都将创建自己的实例.我不完全理解它.父母和孩子是否会有相同的实例?如果我没有孩子会怎么样?什么时候应该使用这个终身经理?请你能解释一下吗?

use*_*864 12

ContainerControlledLifetimeManager 解析作用于容器生命周期的已注册类型的单例实例

HierarchicalLifetimeManager 解析作用于执行解析的容器的生命周期的已注册类型的单例实例(但不一定是注册类型的容器)

如果您的应用程序仅使用单个容器,则HierarchicalLifetimeManager和之间的行为没有区别ContainerControlledLifetimeManager

但是,如果您的应用程序为每个会话/请求创建子容器并使用这些子容器进行解析,那么您将有效地获得每个会话/请求的已注册类型的单例实例