Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 20252|Svar: 1

[Kilde] Instansomfanget af autofac-komponenten

[Kopier link]
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, velstand
Næste:{&quot;error_msg&quot;: &quot;IAM-certificering fejlede&quot;}
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com