Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 36608|Atsakyti: 1

[.NET branduolys] ASP.NET Core (iii) Dinamiškai kurkite egzempliorius naudodami "ActivatorUtilities"

[Kopijuoti nuorodą]
Paskelbta 2020-12-01 13:50:31 | | | |
Peržiūra:

ASP.NET Core (1) naudoja Redis talpyklą
https://www.itsvse.com/thread-9393-1-1.html

ASP.NET Core (2) Iš naujo paleiskite programą pagal kodą
https://www.itsvse.com/thread-9480-1-1.html

Paprastai instanciuotas objektas yra klasės egzempliorius su nauju raktažodžiu

C# dinamiškai sukuria klasės egzempliorių klasės gamykloje, naudodamas šiuos metodus:


Activator.CreateInstance (tipas)
Activator.CreateInstance (tipas, objektas[])


Pirma, mes apibrėžiame ITest sąsają taip:

Apibrėžkite dvi diegimo klases, būtent: TestA ir TestB, ir kodas yra toks:

kur TestB turi netuščią konstruktorių

TestB klasės metodas GetUserName turi nuskaityti konfigūracijos failą per IConfiguration, o tada sujungti jį su gaunamais parametrais, kad būtų grąžinta reikšmė.

Konfigūracijos failas yra toks:



Mes kuriame objektus dinamiškai įkeldami dll, kurdami juos atspindžiu ir instanciuodami juos atitinkamai naudodami "Activator" ir "ActivatorUtilities" su šiuo kodu:

Grąžinti rezultatus:

ret
"Sveiki, itsvse.com"
pvz. Žinutė
"ClassLibrary1.TestB tipui nenustatytas konstruktorius be parametrų."

ret
"Sveiki, itsvse.com"
ret
"aaaa itsvse.com"

Naudojant aktyvatorių TestB objektui sukurti, pranešama apie klaidą:Tipui "ClassLibrary1.TestB" nenustatytas konstruktorius be parametrų.

Sukūrus "TestA" ir "TestB" naudojant "ActivatorUtilities", klaida nebus pranešta, o metodą galima vykdyti įprastai, kaip parodyta toliau:




Naudojant aktyvatorių objektams sukurti .NET sistemoje nėra jokių problemų, tačiau asp.net branduolyje pristatomos IOC ir DI sąvokos, o daugelis objektų nėra konstruktoriai be parametrų ir juos reikia perduoti atitinkamoje įgyvendinimo klasėje.

Kur _services statiniai kintamieji apibrėžiami taip:

CreateInstance(IServiceProvider, tipas, objektas[])
Parametras

teikėjas
IServiceTeikėjas
Priklausomybių sprendimo paslaugų teikėjas

egzemplioriaus tipas
Tipas
Aktyvuotinas tipas

Parametrai
Objektas[]
Konstruktoriaus parametrai, kurių nepateikia teikėjas


Nuoroda:Hipersaito prisijungimas matomas.

(Pabaiga)




Ankstesnis:Mobiliųjų ir stalinių kompiuterių OAuth 2.0 saugos analizė ir CodeVerifier mechanizmas
Kitą:Naudokite JSC, kad sugeneruotumėte dll JavaScript C# skambučiams
Paskelbta 2021-09-22 20:31:33 |
Išmokite mokytis...
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com