Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 36608|Atbildi: 1

[.NET kodols] ASP.NET Core (iii) Dinamiski izveidojiet instances, izmantojot ActivatorUtilities

[Kopēt saiti]
Publicēts 01.12.2020 13:50:31 | | | |
Pārskats:

ASP.NET Core (1) izmanto Redis kešatmiņu
https://www.itsvse.com/thread-9393-1-1.html

ASP.NET kodols (2) Restartējiet lietojumprogrammu pēc koda
https://www.itsvse.com/thread-9480-1-1.html

Parasti instancēts objekts ir klases instancēšana ar jauno atslēgvārdu

C# dinamiski izveido klases instanci klases rūpnīcā, izmantojot šādas metodes:


Activator.CreateInstance (tips)
Activator.CreateInstance (tips, objekts[])


Pirmkārt, mēs definējam ITest saskarni šādi:

Definējiet divas ieviešanas klases, proti: TestA un TestB, un kods ir šāds:

kur TestB ir netukšs konstruktors

Metodei GetUserName klasē TestB ir jānolasa konfigurācijas fails, izmantojot IConfiguration, un pēc tam jāsavieno ar ienākošajiem parametriem, lai atgrieztu atgriezto vērtību.

Konfigurācijas fails ir šāds:



Mēs izveidojam objektus, dinamiski ielādējot dll, izveidojot tos ar atspoguļojumu un instancējot tos, izmantojot attiecīgi Activator un ActivatorUtilities, ar šādu kodu:

Atgriezt rezultātus:

ret
"Sveiki itsvse.com"
piem. Ziņa
"Tipam "ClassLibrary1.TestB" nav definēts konstruktors bez parametriem."

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

Izmantojot aktivatoru, lai izveidotu TestB objektu, tiek ziņots par kļūdu:Tipam 'ClassLibrary1.TestB nav definēts konstruktors bez parametriem.

Izveidojot TestA un TestB, izmantojot ActivatorUtilities, netiks ziņots par kļūdu, un metodi var izpildīt normāli, kā parādīts tālāk:




Nav problēmu izmantot Activator, lai instancētu objektus .NET ietvarā, bet asp.net kodolā tiek ieviesti IOC un DI jēdzieni, un daudzi objekti nav bez parametriem konstruktori, un tie ir jānodod attiecīgajā ieviešanas klasē.

Kur _services statiskos mainīgos lielumus definē šādi:

CreateInstance(IServiceProvider, tips, objekts[])
Parametru

pakalpojumu sniedzējs
IServiceProvider
Pakalpojuma sniedzējs atkarību risināšanai

instances tips
Veids
Aktivizējamais veids

Parametri
Objekts[]
Konstruktora parametri, kurus nenodrošina pakalpojumu sniedzējs


Atsauce:Hipersaites pieteikšanās ir redzama.

(Beigas)




Iepriekšējo:Mobilo un datoru OAuth 2.0 drošības analīze un CodeVerifier mehānisms
Nākamo:Izmantojiet AS, lai ģenerētu dll JavaScript C# zvaniem
Publicēts 22.09.2021 20:31:33 |
Iemācieties mācīties...
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com