Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 36608|Svar: 1

[.NET Core] ASP.NET Core (iii) Opret dynamisk instanser ved hjælp af ActivatorUtilities

[Kopier link]
Opslået på 01/12/2020 13.50.31 | | | |
Anmeldelse:

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

ASP.NET Core (2) Genstart applikationen ved at kode
https://www.itsvse.com/thread-9480-1-1.html

Typisk er et instansieret objekt en instansiering af en klasse med det nye nøgleord

C# opretter dynamisk en instans af en klasse i klassefabrikken ved hjælp af følgende metoder:


Activator.CreateInstance (Type)
Activator.CreateInstance (Type, Object[])


Først definerer vi en ITest-grænseflade som følger:

Definer to implementeringsklasser, nemlig: TestA og TestB, og koden er som følger:

hvor TestB har en ikke-tom konstruktør

GetUserName-metoden i TestB-klassen skal læse konfigurationsfilen gennem IConfiguration og derefter sammensætte den med de indkommende parametre for at returnere returværdien.

Konfigurationsfilen er som følger:



Vi opretter objekter ved dynamisk at indlæse dll'en, skabe dem ved refleksion og instansiere dem via henholdsvis Activator og ActivatorUtilities med følgende kode:

Resultater tilbage:

ret
"Hej itsvse.com"
f.eks. Besked
"Ingen parameterløs konstruktør defineret for typen 'ClassLibrary1.TestB'."

ret
"Hej itsvse.com"
ret
"Aaaa itsvse.com"

Når Activator bruges til at oprette et TestB-objekt, rapporteres der en fejl:Ingen parameterløs konstruktør defineret for typen 'ClassLibrary1.TestB'.

Oprettelse af TestA og TestB via ActivatorUtilities vil ikke rapportere en fejl, og metoden kan udføres normalt, som vist nedenfor:




Der er ikke noget problem i at bruge Activator til at instansiere objekter i .NET-frameworket, men i asp.net kerne introduceres begreberne IOC og DI, og mange objekter er ikke parameterløse konstruktører og skal sendes i den tilsvarende implementeringsklasse.

Hvor _services statiske variable defineres som følger:

CreateInstance(IServiceProvider, Type, Object[])
parameter

Udbyder
IServiceProvider
Tjenesteudbyder til løsning af afhængigheder

instanceType
Type
Typen, der skal aktiveres

Parametre
Mål[]
Konstruktørparametre, som ikke leveres af udbyderen


Henvisning:Hyperlink-login er synlig.

(Slut)




Tidligere:Mobile og desktop OAuth 2.0 sikkerhedsanalyse og CodeVerifier-mekanisme
Næste:Brug JSC til at generere en dll i JavaScript til C#-kald
Opslået på 22/09/2021 20.31.33 |
Lær at lære...
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com