IoC ~ Efficient Autofac
Der er ingen tvivl om, at Microsofts foretrukne IoC-container ikke er spring.net, Unity, men Autofac, på grund af dens effektivitet og enkelhed, så den bruges også til Microsoft-ledede frugtplantageprojekter
illustrerer brugen af en Autofac.
Lad os kalde det nu:
I næste forelæsning vil jeg tale om brugen af Autofac i specifikke projekter til frugtplantageprojekter.
Se nu på dens livscyklus
1、InstancePerDependency
Opret en ny unik instans for hver afhængighed eller kald. Dette er også standardmetoden til at oprette instanser på.
Officiel dokumentation forklarer: Konfigurér komponenten, så hver afhængig komponent eller kald til Resolve() får en ny, unik instans (standard).
2、InstancePerLifetimeScope
I et livscyklusdomæne skaber hver afhængighed eller kald en enkelt delt instans, og for hvert forskelligt livscyklusdomæne er instansen unik og ikke delt.
Officiel dokumentation forklarer: Konfigurér komponenten, så hver afhængig komponent eller kald til Resolve() inden for en enkelt ILifetimeScope får den samme, delte instans. Afhængige komponenter i forskellige levetidsscopes vil få forskellige instanser.
3、InstancePerMatchingLifetimeScope
I et identificeret livscyklusdomæne skaber hver afhængighed eller kald en enkelt delt instans. Instanser i forældredomænet kan deles i børneidentitetsdomænet for det identificerede livscyklusdomæne. Hvis der ikke findes noget identificeret livscyklusdomæne i hele arvehierarkiet, kastes en undtagelse: DependencyResolutionException.
Officiel dokumentation forklarer: Konfigurér komponenten, så hver afhængig komponent eller kald til Resolve() inden for en ILifetimeScope, der er tagget med en af de angivne tags, får den samme, delte instans. Afhængige komponenter i livstidsscopes, som er børn af det taggede scope, vil dele forældreinstansen. Hvis der ikke findes et passende tagget scope i hierarkiet, kastes en DependencyResolutionException.
4、InstancePerOwned
I livscyklussen for en instans, der oprettes af en instans ejet i et livscyklusdomæne, opretter hver afhængig komponent eller kald til Resolve()-metoden en enkelt delt instans, og det underordnede livscyklusdomæne deler instanserne i forældrelivscyklusdomænet. Hvis der ikke findes et passende livscyklusdomæne med børneinstanser i arvehierarkiet, kastes en undtagelse: DependencyResolutionException.
Den officielle dokumentation forklarer:
Konfigurér komponenten, så hver afhængig komponent eller kald til Resolve() inden for et ILifetimeScope oprettet af en ejet instans får den samme, delte instans. Afhængige komponenter i livstidsscopes, som er børn af den ejede instans, vil dele forælderens instans. Hvis der ikke findes et passende ejet instans-scope i hierarkiet, kastes en DependencyResolutionException.
5、SingleInstance
Hver gang du er afhængig af en komponent eller kalder Resolve()-metoden, får du den samme delte instans. Faktisk er det en singleton-model.
Officiel dokumentation forklarer: Konfigurér komponenten, så hver afhængig komponent eller kald til Resolve() får den samme, delte instans.
6、InstancePerHttpRequest
I forbindelse med en HTTP-anmodning deles en instans af en komponent. Kun tilgængelig for asp.net MVC-udvikling.
|