|
|
Opslået på 14/09/2018 13.22.21
|
|
|
|

Instansens scope bestemmer, hvordan tjenester deles mellem forespørgsler.
Original adresse:http://docs.autofac.org/en/latest/lifetime/instance-scope.html
Én instans pr. afhængighed
Med denne mulighed returneres en ny instans hver gang tjenesten anmodes. Brug InstancePerDependency(). Dette er standardindstillingen. Koden nedenfor, linjerne 2 og 3, er ækvivalente.
Den følgende kode genererer en ny instans for hver løkke, i alt 100 instanser.
Enkelt instans
Brug denne mulighed til at anmodere om en tjeneste enten i root- eller det indlejrede scope, hvor begge returnerer den samme instans. Brug SingleInstance() til at specificere.
Koden nedenfor, w1 og w2, er altid det samme objekt, og der er kun én instans af Worker-klassen i 100 løkker.
Én instans pr. livscyklusomfang
Brug denne mulighed til at anmode om en tjeneste i en specifik ILifetimeScope, hvor kun én instans returneres. Brug InstancePerLifetimeScope(). I den følgende kode er de 100 gange w1 i scope1 det samme objekt, og de 100 gange w2 i scope2 er det samme objekt, men w1 og w2 er ikke det samme objekt.
Én instans pr. matchende livscyklus
Lignende [én instans per livscyklus-scope] ovenfor, men med mere kontrol. Brug denne mulighed for at tillade ILifetimeScope-objektet at få et tag. Der er kun én instans inden for tag-matchens område. Brug InstancePerMatchingLifetimeScope()-metoden.
I koden nedenfor er w1 og w2 det samme, w3 og w4 er det samme, men w1 og w3 er forskellige.
Den relevante markup skal angives ved parsing, og følgende kode kaster en undtagelse.
Én instans pr. anmodning
Nogle applikationer har naturligt Request-semantik, såsom ASP.NET MVC- eller WebForm-applikationer. [Én instans pr. anmodning] implementeres på grundlag af [én instans pr. matchende livscyklusområde], ved at levere scope-markører, registreringsfunktioner og fælles typeintegration. Grundlæggende [én instans pr. matchende livscyklusområde].
ASP.NET Core bruger én instans pr. livscyklusomfang i stedet for én instans pr. anmodning.
Én instans pr. Owned
Typen Owned<T> implicit association skaber indlejrede livscyklusintervaller. Med registrering af instans pr. ejer kan du begrænse afhængigheder til ejede instanser.
I dette tilfælde er ServiceForHandler-tjenesten begrænset til MessageHandler-instansens omfang.
Trådområde
Autofac kan tvinge objekterne i tråd A til ikke at opfylde tråd Bs afhængigheder.
Lad derefter hver skabe deres eget livstidsomfang
Vigtigt: I et multitrådet scenarie, vær forsigtig med ikke at rydde op i forældrescopet.Ellers vil delscopes i den afledte tråd ikke kunne løse tjenesten.
Hver tråd vil have sin egen instans af MyThreadScopedComponent, som i bund og grund er en livscyklus-scoped singleton. Instanser i scope leveres ikke eksternt, så det er nemt at holde komponenter isoleret mellem tråde.
Ved at tilføje parameteren ILifetimeScope kan forældreområdet injiceres i koden, der genererer tråden, og Autofac vil automatisk indsprøjte det aktuelle område, som derefter kan bruges til at oprette indlejrede scopes.
Hvis du vil kontrollere det yderligere, kan du bruge [én instans pr. matchende livscyklusområde] til at associere tråd-scoped komponenter med interne livscyklusscopes, som vist i figuren:
"Konteksten" i diagrammet er livscyklusområdet, der er skabt af BeginLifetimeScope-metoden.
|
Tidligere:Front-end museklik-effekter: frihed, demokrati, velstandNæste:{"error_msg": "IAM-certificering fejlede"}
|