ContainerControlledLifetimeManager和HierarchicalLifetimeManager之间的一般区别是什么?我知道ContainerControlledLifetimeManager代表单例,这是DI容器将为每种需要依赖的类型创建一个新实例。我阅读了有关Understanding Lifetime Managers的有用文章。我将容器创建的实例的哈希码与不同的生命周期管理器进行了比较。如果使用ContainerControlledLifetimeManager,则每个请求的实例都相同,但是使用HierarchicalLifetimeManager时,哈希值却不同。正如文章中所写,每个子容器都将创建自己的实例。我不完全了解。父母与子女是否有相同的实例?如果我没有孩子会怎样?我什么时候应该使用这个寿命管理器?请你给我解释一下吗?
最佳答案
ContainerControlledLifetimeManager
解析已注册类型的单例实例,其作用域范围为容器的生存期HierarchicalLifetimeManager
解析已注册类型的单例实例,该实例的范围仅限于执行解析的容器的寿命(但不一定是已注册类型的容器)
如果您的应用程序仅使用单个容器,则HierarchicalLifetimeManager
和ContainerControlledLifetimeManager
之间的行为没有区别
但是,如果您的应用程序为每个会话/请求创建子容器并使用这些子容器进行解析,则可以有效地获取每个会话/请求的注册类型的单例实例