Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 36608|Odgovoriti: 1

[.NET Core] ASP.NET Jedro (iii) Dinamično ustvarjanje instanc z uporabo ActivatorUtilities

[Kopiraj povezavo]
Objavljeno na 1. 12. 2020 13:50:31 | | | |
Pregled:

ASP.NET Core (1) uporablja Redis predpomnjenje
https://www.itsvse.com/thread-9393-1-1.html

ASP.NET Jedro (2) Ponovni zagon aplikacije s kodo
https://www.itsvse.com/thread-9480-1-1.html

Običajno je instanciran objekt instanca razreda z novo ključno besedo

C# dinamično ustvari instanco razreda v tovarni razredov z naslednjimi metodami:


Activator.CreateInstance (tip)
Activator.CreateInstance (tip, objekt[])


Najprej definiramo ITest vmesnik takole:

Določimo dva implementacijska razreda, in sicer: TestA in TestB, koda pa je naslednja:

kjer ima TestB neprazen konstruktor

Metoda GetUserName v razredu TestB mora prebrati konfiguracijsko datoteko preko IConfiguration in jo nato povezati z vhodnimi parametri, da vrne vrnjeno vrednost.

Konfiguracijska datoteka je naslednja:



Objekte ustvarjamo tako, da dinamično nalagamo dll, jih ustvarimo z refleksijo in jih instanciramo prek Activator oziroma ActivatorUtilities, z naslednjo kodo:

Rezultati vrnitve:

upokojitev
"Živjo, itsvse.com"
bivši. Sporočilo
"Ni definiranega konstruktorja brez parametrov za tip 'ClassLibrary1.TestB'."

upokojitev
"Živjo, itsvse.com"
upokojitev
"Aaaa itsvse.com"

Pri uporabi Activatorja za ustvarjanje TestB objekta se prijavi napaka:Ni definiranega konstruktorja brez parametrov za tip 'ClassLibrary1.TestB'.

Ustvarjanje TestA in TestB preko ActivatorUtilities ne bo poročalo o napaki, metoda pa se lahko izvaja normalno, kot je prikazano spodaj:




Ni težav z uporabo Activatorja za instanciranje objektov v .NET ogrodju, vendar so v asp.net jedru uvedeni koncepti IOC in DI, mnogi objekti pa niso konstruktorji brez parametrov in jih je treba prenesti v ustrezni implementacijski razred.

Kjer je _services statičnih spremenljivk definiranih takole:

CreateInstance(IServiceProvider, Type, Object[])
parameter

Ponudnik
IServiceProvider
Ponudnik storitev za reševanje odvisnosti

instanceType
Vrsta
Tip za aktivacijo

Parametri
Cilj[]
Parametri konstruktorja, ki jih ponudnik ne zagotavlja


Referenčni:Prijava do hiperpovezave je vidna.

(Konec)




Prejšnji:Mobilna in namizna analiza varnosti OAuth 2.0 in mehanizem CodeVerifier
Naslednji:Uporabite JSC za generiranje dll v JavaScriptu za C# klice
Objavljeno na 22. 09. 2021 20:31:33 |
Nauči se učiti...
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com