Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 36608|Svare: 1

[.NET Core] ASP.NET Core (iii) Opprett instanser dynamisk ved hjelp av ActivatorUtilities

[Kopier lenke]
Publisert på 01.12.2020 13:50:31 | | | |
Anmeldelse:

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

ASP.NET Core (2) Start applikasjonen på nytt via kode
https://www.itsvse.com/thread-9480-1-1.html

Vanligvis er et instansiert objekt en instansiering av en klasse med det nye nøkkelordet

C# oppretter dynamisk en instans av en klasse i klassefabrikken ved hjelp av følgende metoder:


Activator.CreateInstance (Type)
Activator.CreateInstance (type, objekt[])


Først definerer vi et ITest-grensesnitt 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 må lese konfigurasjonsfilen gjennom IConfiguration, og deretter sy den sammen med de innkommende parameterne for å returnere returverdien.

Konfigurasjonsfilen er som følger:



Vi lager objekter ved å laste dll-en dynamisk, opprette dem ved refleksjon, og instansiere dem gjennom henholdsvis Activator og ActivatorUtilities, med følgende kode:

Resultater fra retur:

Ret
"Hei itsvse.com"
f.eks. Melding
"Ingen parameterløs konstruktør definert for typen 'ClassLibrary1.TestB'."

Ret
"Hei itsvse.com"
Ret
"Aaaa itsvse.com"

Når man bruker Activator for å lage et TestB-objekt, rapporteres en feil:Ingen parameterløs konstruktør definert for typen 'ClassLibrary1.TestB'.

Å opprette TestA og TestB via ActivatorUtilities vil ikke rapportere en feil, og metoden kan kjøres normalt, som vist nedenfor:




Det er ikke noe problem å bruke Activator til å instansiere objekter i .NET-rammeverket, men i kjernen asp.net introduseres konseptene IOC og DI, og mange objekter er ikke parameterløse konstruktører og må sendes i den tilsvarende implementeringsklassen.

Hvor _services statiske variablene defineres som følger:

CreateInstance(IServiceProvider, Type, Object[])
parameter

Leverandør
IServiceProvider
Tjenesteleverandør for å løse avhengigheter

instanceType
Type
Typen som skal aktiveres

Parametere
Mål[]
Konstruktørparametere som ikke oppgis av leverandøren


Referanse:Innloggingen med hyperkoblingen er synlig.

(Slutt)




Foregående:Mobile og desktop OAuth 2.0 sikkerhetsanalyse og CodeVerifier-mekanisme
Neste:Bruk JSC for å generere en dll i JavaScript for C#-kall
Publisert på 22.09.2021 20:31:33 |
Lær å lære...
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com