See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 36608|Vastuse: 1

[.NET tuum] ASP.NET Core (iii) Dünaamiliselt loo instantse ActivatorUtilities abil

[Kopeeri link]
Postitatud 01.12.2020 13:50:31 | | | |
Läbivaatamine:

ASP.NET Core (1) kasutab Redis vahemällu salvestamist
https://www.itsvse.com/thread-9393-1-1.html

ASP.NET Core (2) Taaskäivita rakendus koodi järgi
https://www.itsvse.com/thread-9480-1-1.html

Tavaliselt on instanteeritud objekt klassi instanseerimine uue märksõnaga

C# loob dünaamiliselt klassi eksemplari klassitehases järgmiste meetoditega:


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


Esiteks defineerime ITesti liidese järgmiselt:

Defineeri kaks rakendusklassi, nimelt: TestA ja TestB, ning kood on järgmine:

kus TestB-l on mitte-tühi konstruktor

GetUserName meetod TestB klassis peab lugema konfiguratsioonifaili IConfigurationi kaudu ja seejärel ühendama selle saabuvate parameetritega, et tagastada tagastusväärtus.

Konfiguratsioonifail on järgmine:



Loome objekte, laadides dll-i dünaamiliselt ja luues neid peegelduse teel ning instantsieerides neid vastavalt Activator ja ActivatorUtilities abil, kasutades järgmist koodi:

Tagastustulemused:

rets
"Tere, itsvse.com"
Näiteks. Sõnum
"Tüübi 'ClassLibrary1.TestB' jaoks pole määratletud parameetrivaba konstruktorit."

rets
"Tere, itsvse.com"
rets
"Aaaa itsvse.com"

Kui kasutada Activatorit TestB objekti loomiseks, teatatakse viga:Tüübi 'ClassLibrary1.TestB' jaoks ei ole määratletud parameetrivaba konstruktorit.

TestA ja TestB loomine ActivatorUtilities'i kaudu ei teata veast ning meetodit saab täita tavapäraselt, nagu allpool näidatud:




Aktivaatori kasutamisel .NET raamistikus objektide loomiseks pole probleemi, kuid asp.net tuumas tutvustatakse IOC ja DI kontseptsioone ning paljud objektid ei ole parameetrivabad konstruktorid ja neid tuleb edastada vastavas rakendusklassis.

Kus _services staatilised muutujad on defineeritud järgmiselt:

CreateInstance(IServiceProvider, Type, Object[])
parameeter

Teenusepakkuja
IServiceProvider
Teenusepakkuja sõltuvuste lahendamiseks

instanceType
Tüüp
Tüüp, mida aktiveerida

Parameetrid
Objekt[]
Konstruktori parameetrid, mida pakkuja ei paku


Viide:Hüperlingi sisselogimine on nähtav.

(Lõpp)




Eelmine:Mobiil- ja lauaarvuti OAuth 2.0 turvaanalüüs ja CodeVerifier mehhanism
Järgmine:Kasuta JSC-d, et genereerida JavaScriptis dll C# kõnede jaoks
Postitatud 22.09.2021 20:31:33 |
Õpi õppima...
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com