Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 36608|Vastaus: 1

[.NET Core] ASP.NET Core (iii) Luo instansseja dynaamisesti ActivatorUtilitiesin avulla

[Kopioi linkki]
Julkaistu 1.12.2020 13.50.31 | | | |
Arvostelu:

ASP.NET Core (1) käyttää Redis-välimuistia
https://www.itsvse.com/thread-9393-1-1.html

ASP.NET Ydin (2) Käynnistä sovellus uudelleen koodin mukaan
https://www.itsvse.com/thread-9480-1-1.html

Tyypillisesti instantioitu olio on luokan instanssiointi, jossa on uusi avainsana

C# luo dynaamisesti luokan instanssin luokkatehtaassa seuraavilla menetelmillä:


Activator.CreateInstance (tyyppi)
Activator.CreateInstance (tyyppi, objekti[])


Ensiksi määrittelemme ITest-rajapinnan seuraavasti:

Määritellään kaksi toteutusluokkaa, nimittäin: TestA ja TestB, ja koodi on seuraava:

missä Testi B:llä on ei-tyhjä konstruktori

GetUserName-metodin TestB-luokassa täytyy lukea konfiguraatiotiedosto IConfigurationin kautta ja yhdistää se saapuvien parametrien kanssa palautusarvon palauttamiseksi.

Konfiguraatiotiedosto on seuraava:



Luomme objekteja lataamalla dll:n dynaamisesti, luomalla ne heijastuksen avulla ja instanssioimalla ne Activatorin ja ActivatorUtilitiesin avulla seuraavalla koodilla:

Palautustulokset:

ret.
"Hei itsvse.com"
esim. Viesti
"Ei parametritonta konstruktoria määritelty tyypille 'ClassLibrary1.TestB'."

ret.
"Hei itsvse.com"
ret.
"aaaa itsvse.com"

Kun käytetään Activatoria TestB-objektin luomiseen, raportoidaan virhe:Tyypille 'ClassLibrary1.TestB' ei ole määritelty parametritonta konstruktoria.

TestA:n ja TestB:n luominen ActivatorUtilitiesin kautta ei raportoi virhettä, ja metodi voidaan suorittaa normaalisti, kuten alla on esitetty:




Aktivaattorin käytössä objektien instanssiointiin .NET-kehyksessä ei ole ongelmaa, mutta ytimessä asp.net otetaan käyttöön IOC ja DI -käsitteet, ja monet objektit eivät ole parametrittomia konstruktoreita, vaan ne täytyy siirtää vastaavassa toteutusluokassa.

Missä _services staattista muuttujaa määritellään seuraavasti:

CreateInstance(IServiceProvider, Type, Object[])
parametri

Palveluntarjoaja
IServiceProvider
Palveluntarjoaja riippuvuuksien ratkaisemiseen

instanceType
Tyyppi
Tyyppi, joka aktivoituu

parametrit
Kohde[]
Rakentajan parametrit, joita palveluntarjoaja ei toimita


Viittaus:Hyperlinkin kirjautuminen on näkyvissä.

(Loppu)




Edellinen:Mobiili- ja työpöytä-OAuth 2.0 -tietoturva-analyysi ja CodeVerifier-mekanismi
Seuraava:Käytä JSC:tä luodaksesi dll:n JavaScriptissä C#-kutsuille
Julkaistu 22.9.2021 20.31.33 |
Opettele oppimaan...
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com