Pamoka apie ASP.NET pagrindinės priklausomybės inversiją, valdymo inversiją (DI IOC):
Peržiūra:
Priklausomybės injekcija trumpai:
Priklausomybės injekcija (DI) yra technika, įgyvendinanti laisvą objekto ir jo bendradarbių ar priklausomybių susiejimą. Pateikite šiuos objektus, kuriuos klasė naudoja savo operacijoms atlikti klasei, o ne tiesiogiai instanciuoti bendradarbius ar naudoti statines nuorodas.
ASP.NET "Core DI" objektams gauti paprastai naudoja konstruktoriaus injekciją, pvz., sukonfigūravus "ConfigureServices" injekciją, ją galima gauti šiais būdais:
Ką daryti, jei injekcijos objektą gausite rankiniu būdu?
Pirmasis būdas jį gauti(Kartais jūs negalite gauti,Nerekomenduojama):
Antrasis būdas jį gauti(Rekomenduojamas naudojimas):
Pastaba: Reikėtų pažymėti, kad naudojant ServiceLocator.Instance.GetService<T>(); ,Galima gauti tik "AddTransient" ir "AddSingleton" įterptus objektusir negali gauti įterpto "AddScoped" objekto (unikalaus užklausos gyvavimo cikle) ne todėl, kad jo negalima gauti, o todėl, kad įsigyto objekto negauna konstruktorius, tai yra, įsigytas objektas nėra bendrinamas, o naudojimo scenarijus yra toks kaip IUnitOfWork.
Taigi, kaip rankiniu būdu gauti injekcijos objektus užklausos gyvavimo ciklo metu? Štai kaip:
arba
IHttpContextAccessor sąsaja yra pakete Microsoft.AspNetCore.Http.AbstractionsNuget.
|