Vodič o ASP.NET vbrizgavanju odvisnosti jedra, inverziji nadzora (DI IOC):
Pregled:
Injekcija odvisnosti na kratko:
Vbrizgavanje odvisnosti (DI) je tehnika, ki izvaja ohlapno povezovanje med objektom in njegovimi sodelavci ali odvisnostmi. Zagotovite te objekte, ki jih razred uporablja za izvajanje svojih operacij v razredu na nek način, namesto da neposredno instancira sodelavce ali uporablja statične reference.
ASP.NET Core DI običajno uporablja vbrizgavanje konstruktorjev za pridobivanje objektov, na primer po konfiguraciji injekcije ConfigureServices, ki ga je mogoče pridobiti na naslednje načine:
Kaj pa, če ročno dobiš objekt za vbrizgavanje?
Prvi način, da ga dobiš(Včasih je ne moreš dobiti,Ni priporočljivo):
Drugi način, da ga dobiš(Priporočena uporaba):
Opomba: Treba je poudariti, da z uporabo ServiceLocator.Instance.GetService<T>(); ,Lahko se pridobijo le objekti, ki jih vbrizgata AddTransient in AddSingleton, in ne more pridobiti vbrizganega objekta AddScoped (edinstvenega v življenjskem ciklu zahteve), ne zato, ker ga ni mogoče pridobiti, ampak ker pridobljeni objekt ni pridobljen s strani konstruktorja, torej pridobljeni objekt ni deljen in je scenarij uporabe takšen, kot je IUnitOfWork.
Kako torej ročno pridobiš objekte za vbrizgavanje med življenjskim ciklom zahteve? Tukaj je, kako:
ali
Vmesnik IHttpContextAccessor je pod paketom Microsoft.AspNetCore.Http.AbstractionsNuget.
|