Dependency injection ContainerControlled LifetimeManager和HierarchyCallifeTimeManager之间的主要区别是什么?

Dependency injection ContainerControlled LifetimeManager和HierarchyCallifeTimeManager之间的主要区别是什么?,dependency-injection,inversion-of-control,unity-container,Dependency Injection,Inversion Of Control,Unity Container,ContainerControlled LifetimeManager和HierarchyCallifeTimeManager之间的一般区别是什么?我知道ContainerControlledLifetimeManager表示singleton,即DI容器将为每个需要依赖关系的类型创建一个新实例。我读了一篇有用的文章。我比较了容器使用不同的生存期管理器创建的实例的哈希代码。如果我使用ContainerControlledLifetimeManager,每个请求都会得到相同的实例,但是当我使用Hi

ContainerControlled LifetimeManager和HierarchyCallifeTimeManager之间的一般区别是什么?我知道ContainerControlledLifetimeManager表示singleton,即DI容器将为每个需要依赖关系的类型创建一个新实例。我读了一篇有用的文章。我比较了容器使用不同的生存期管理器创建的实例的哈希代码。如果我使用ContainerControlledLifetimeManager,每个请求都会得到相同的实例,但是当我使用HierarchyCallifeTimeManager时,会得到不同的哈希代码。正如本文所述,每个子容器将创建自己的实例。我不完全明白。父对象和子对象是否具有相同的实例?如果我没有孩子会怎么样?我应该什么时候使用这个终身管理器?请您向我解释一下好吗?

ContainerControlled LifetimeManager解析作用域为容器生存期的已注册类型的单例实例

HierarchyCallifeTimeManager
将已注册类型的单例实例解析为执行解析的容器(但不一定是已注册类型的容器)的生存期

如果应用程序仅使用单个容器,则
层次结构CallifetimeManager
容器控制LifetimeManager

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