ContainerControlledLifetimeManager和HierarchicalLifetimeManager之间的一般区别是什么?我知道ContainerControlledLifetimeManager表示单例,即DI容器将为每个需要依赖的类型创建一个新实例。我阅读了有关Understanding Lifetime Managers的有用文章。我将容器创建的实例的哈希码与不同的生命周期管理器进行了比较。如果我使用ContainerControlledLifetimeManager,每个请求都有相同的实例,但是当我使用HierarchicalLifetimeManager时,我得到了不同的哈希码。正如文章中所写,每个子容器都将创建自己的实例。我不完全理解它。父母和孩子是否会有相同的实例?如果我没有孩子会怎么样?什么时候应该使用这个终身经理?请你能解释一下吗?
答案 0 :(得分:8)
ContainerControlledLifetimeManager
解析了作用于容器生命周期的已注册类型的单例实例
HierarchicalLifetimeManager
解析了作用于执行解析的容器生命周期的已注册类型的单例实例(但不一定是注册类型的容器)
如果您的应用程序仅使用单个容器,则HierarchicalLifetimeManager
和ContainerControlledLifetimeManager
但是,如果您的应用程序为每个会话/请求创建子容器并使用这些子容器进行解析,那么您有效地获得每个会话/请求的已注册类型的单例实例