1、InstancePerDependency
Създайте нов уникален инстанс за всяка зависимост или повикване. Това е и стандартният начин за създаване на инстанции.
Официалната документация обяснява: Конфигурирайте компонента така, че всеки зависим компонент или повикване към Resolve() да получава нов, уникален инстанс (по подразбиране).
2、InstancePerLifetimeScope
В домейн от жизнения цикъл всяка зависимост или повикване създава един споделен инстанс, а за всеки различен домейн от жизнения цикъл екземплярът е уникален и не се споделя.
Официалната документация обяснява: Конфигурирайте компонента така, че всеки зависим компонент или повикване към Resolve() в рамките на един ILifetimeScope да получава една и съща, споделена инстанция. Зависимите компоненти в различни обхвати на живот ще получат различни инстанции.
3、InstancePerMatchingLifetimeScope
В идентифициран домейн от жизнения цикъл всяка зависимост или повикване създава един споделен екземпляр. Екземплярите в родителския домейн могат да се споделят в домейна на дъщерната идентичност на идентифицирания домейн жизнения цикъл. Ако не се намери идентифициран домейн от жизнения цикъл в цялата йерархия на наследяване, се хвърля изключение: DependencyResolutionException.
Официалната документация обяснява: Конфигурирайте компонента така, че всеки зависим компонент или повикване към Resolve() в ILifetimeScope, тагнат с някоя от предоставените стойности на тагове, да получава една и съща, споделена инстанция. Зависимите компоненти в обхватите на живота, които са деца на тагнатия обхват, ще споделят инстанцията на родителя. Ако не може да се намери подходящо тагнат обхват в йерархията, се хвърля изключение DependencyResolution.
4、InstancePerOwned
В жизнения цикъл на инстанция, създадена от инстанция, притежавана в домейн на жизнения цикъл, всеки зависим компонент или повикване към метода Resolve() създава един споделен екземпляр, а домейнът на дъщерния жизнен цикъл споделя инстанциите в домейна на родителския жизнен цикъл. Ако в йерархията на наследяване не се намери подходящ домейн на жизнения цикъл с дъщерни инстанции, се хвърля изключение: DependencyResolutionException.
Официалната документация обяснява: Конфигурирайте компонента така, че всеки зависим компонент или повикване към Resolve() в ILifetimeScope, създаден от собствена инстанция, да получава еднакъв, споделен инстанс. Зависимите компоненти в обхватите на живота, които са деца на обхвата на собствения инстанс, ще споделят инстанцията на родителя. Ако в йерархията не може да се намери подходящ обхват на собственост на инстанция, се хвърля DependencyResolutionException.
5、SingleInstance
Всеки път, когато разчитате на компонент или извикате метода Resolve(), получавате една и съща споделена инстанция. Всъщност, това е модел с един тон.
Официалната документация обяснява: Конфигурирайте компонента така, че всеки зависим компонент или повикване към Resolve() да получава една и съща споделена инстанция.
6、InstancePerHttpRequest
В контекста на Http заявка, споделяйте екземпляр на компонент. Достъпен само за разработка asp.net MVC. Официалната документация обяснява: Сподели една екземпляр на компонента в контекста на една HTTP заявка. Официален линк към документацията: http://autofaccn.readthedocs.io/en/latest/lifetime/instance-scope.html
|