0

Какова общая разница между ContainerControlledLifetimeManager и HierarchicalLifetimeManager? Я знаю, что ContainerControlledLifetimeManager представляет singleton, который представляет собой контейнер DI, создаст новый экземпляр для каждого типа, который нуждается в зависимости. Я прочитал полезную статью о Understanding Lifetime Managers. Я сравнивал хэш-коды экземпляров, которые создавались контейнером с разными менеджерами жизни. У меня есть тот же экземпляр для каждого запроса, если я использую ContainerControlledLifetimeManager, но при использовании HierarchicalLifetimeManager я получил разные хеш-коды. Как написано в статье, каждый дочерний контейнер создаст свой собственный экземпляр. Я не совсем понимаю это. Будет ли у родителя и ребенка один и тот же экземпляр или нет? Что произойдет, если у меня не будет детей? Когда я должен использовать этого пожизненного менеджера? Пожалуйста, не могли бы вы объяснить это мне?В чем основное отличие между ContainerControlledLifetimeManager и HierarchicalLifetimeManager?

ответ

-1

ContainerControlledLifetimeManager решает одноэлементный экземпляр зарегистрированного типа области видимости срока службы контейнера

HierarchicalLifetimeManager решает одноэлементный экземпляр зарегистрированного типа области видимости срока службы контейнера, который выполняется разрешение (но не обязательно, контейнер, где был зарегистрирован тип)

Если приложение делает только использование одного контейнера, нет никакой разницы в поведении между HierarchicalLifetimeManager и ContainerControlledLifetimeManager

Однако я f ваше приложение создает дочерние контейнеры на сеанс/запрос и разрешает использование этих дочерних контейнеров, то вы фактически получаете один экземпляр зарегистрированных зарегистрированных типов за сеанс/запрос