ContainerControlledLifetimeManager 和 HierarchicalLifetimeManager 之间的主要区别是什么?
What is the main difference between ContainerControlledLifetimeManager and HierarchicalLifetimeManager?
ContainerControlledLifetimeManager 和 HierarchicalLifetimeManager 之间的一般区别是什么?我知道 ContainerControlledLifetimeManager 代表单例,即 DI 容器将为需要依赖的每种类型创建一个新实例。我阅读了关于 Understanding Lifetime Managers 的有用文章。我将容器创建的实例的哈希码与不同的生命周期管理器进行了比较。如果我使用 ContainerControlledLifetimeManager,我会为每个请求获得相同的实例,但是当我使用 HierarchicalLifetimeManager 时,我会获得不同的哈希码。正如文章中所写,每个 child 容器都会创建自己的实例。我不完全明白。 parent 和 child 是否具有相同的实例?如果我没有 children 会怎样?我什么时候应该使用这个生命周期管理器?你能给我解释一下吗?
ContainerControlledLifetimeManager
解析范围为容器生命周期的已注册类型的单例实例
HierarchicalLifetimeManager
解析已注册类型的单例实例,范围为执行解析的容器的生命周期(但不一定是注册类型的容器)
如果您的应用程序仅使用单个容器,则 HierarchicalLifetimeManager
和 ContainerControlledLifetimeManager
之间的行为没有区别
但是,如果您的应用程序为每个会话/请求创建子容器并使用这些子容器进行解析,那么您实际上会为每个会话/请求获得一个已注册类型的单例实例
ContainerControlledLifetimeManager 和 HierarchicalLifetimeManager 之间的一般区别是什么?我知道 ContainerControlledLifetimeManager 代表单例,即 DI 容器将为需要依赖的每种类型创建一个新实例。我阅读了关于 Understanding Lifetime Managers 的有用文章。我将容器创建的实例的哈希码与不同的生命周期管理器进行了比较。如果我使用 ContainerControlledLifetimeManager,我会为每个请求获得相同的实例,但是当我使用 HierarchicalLifetimeManager 时,我会获得不同的哈希码。正如文章中所写,每个 child 容器都会创建自己的实例。我不完全明白。 parent 和 child 是否具有相同的实例?如果我没有 children 会怎样?我什么时候应该使用这个生命周期管理器?你能给我解释一下吗?
ContainerControlledLifetimeManager
解析范围为容器生命周期的已注册类型的单例实例
HierarchicalLifetimeManager
解析已注册类型的单例实例,范围为执行解析的容器的生命周期(但不一定是注册类型的容器)
如果您的应用程序仅使用单个容器,则 HierarchicalLifetimeManager
和 ContainerControlledLifetimeManager
但是,如果您的应用程序为每个会话/请求创建子容器并使用这些子容器进行解析,那么您实际上会为每个会话/请求获得一个已注册类型的单例实例