Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 36608|Răspunde: 1

[.NET Core] ASP.NET Core (iii) Crearea dinamică a instanțelor folosind ActivatorUtilities

[Copiază linkul]
Postat pe 01.12.2020 13:50:31 | | | |
Recenzie:

ASP.NET Core (1) folosește cache Redis
https://www.itsvse.com/thread-9393-1-1.html

ASP.NET Nucleu (2) Repornește aplicația prin cod
https://www.itsvse.com/thread-9480-1-1.html

De obicei, un obiect instanțiat este o instanțiere a unei clase cu noul cuvânt-cheie

C# creează dinamic o instanță a unei clase în fabrica de clase folosind următoarele metode:


Activator.CreateInstance (Tip)
Activator.CreateInstance (Tip, Obiect[])


În primul rând, definim o interfață ITest astfel:

Definiți două clase de implementare, și anume: TestA și TestB, iar codul este următorul:

unde TestB are un constructor nevid

Metoda GetUserName din clasa TestB trebuie să citească fișierul de configurare prin IConfiguration și apoi să-l îmbine cu parametrii de intrare pentru a returna valoarea returnată.

Fișierul de configurare este următorul:



Creăm obiecte prin încărcarea dinamică a dll-ului, crearea lor prin reflexie și instanțierea lor prin Activator și ActivatorUtilities, respectiv, cu următorul cod:

Rezultatele revenirii:

ret
"Salut itsvse.com"
ex. Mesaj
"Niciun constructor fără parametri definit pentru tipul 'ClassLibrary1.TestB'."

ret
"Salut itsvse.com"
ret
"Aaaa itsvse.com"

Când se folosește Activator pentru a crea un obiect TestB, se raportează o eroare:Niciun constructor fără parametri definit pentru tipul 'ClassLibrary1.TestB'.

Crearea TestA și TestB prin ActivatorUtilities nu va raporta o eroare, iar metoda poate fi executată normal, așa cum se arată mai jos:




Nu există nicio problemă în a folosi Activator pentru a instanția obiecte în framework-ul .NET, dar în nucleul asp.net sunt introduse conceptele de IOC și DI, iar multe obiecte nu sunt constructori fără parametri și trebuie trecute în clasa corespunzătoare de implementare.

Unde _services variabile statice sunt definite astfel:

CreateInstance(IServiceProvider, Type, Object[])
parametru

Furnizor
IServiceProvider
Furnizor de servicii pentru rezolvarea dependențelor

instanceType
Tip
Tipul de activat

Parametri
Obiect[]
Parametri de constructor care nu sunt furnizați de furnizor


Referință:Autentificarea cu hyperlink este vizibilă.

(Sfârșit)




Precedent:Analiza de securitate OAuth 2.0 pe mobil și desktop și mecanismul CodeVerifier
Următor:Folosește JSC pentru a genera un dll în JavaScript pentru apeluri C#
Postat pe 22.09.2021 20:31:33 |
Învață să înveți...
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com