Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 36608|Risposta: 1

[.NET Core] ASP.NET Core (iii) Creare dinamicamente istanze usando ActivatorUtilities

[Copiato link]
Pubblicato su 01/12/2020 13:50:31 | | | |
Recensione:

ASP.NET Core (1) utilizza la cache Redis
https://www.itsvse.com/thread-9393-1-1.html

ASP.NET Core (2) Riavvia l'applicazione tramite codice
https://www.itsvse.com/thread-9480-1-1.html

Tipicamente un oggetto istanziato è un'istanziazione di una classe con la nuova parola chiave

C# crea dinamicamente un'istanza di una classe nella class factory usando i seguenti metodi:


Activator.CreateInstance (Tipo)
Activator.CreateInstance (Tipo, Oggetto[])


Per prima cosa, definiamo un'interfaccia ITest come segue:

Definisci due classi di implementazione, ovvero: TestA e TestB, e il codice è il seguente:

dove TestB ha un costruttore non vuoto

Il metodo GetUserName nella classe TestB deve leggere il file di configurazione tramite IConfiguration e poi unirlo con i parametri in ingresso per restituire il valore di ritorno.

Il file di configurazione è il seguente:



Creiamo oggetti caricando dinamicamente la dll, creandoli per riflessione e istanziandoli tramite Activator e ActivatorUtilities rispettivamente, con il seguente codice:

Risultati dei risultati:

ret
"Ciao itsvse.com"
es. Messaggio
"Nessun costruttore senza parametri definito per il tipo 'ClassLibrary1.TestB'."

ret
"Ciao itsvse.com"
ret
"Aaaa itsvse.com"

Quando si utilizza Activator per creare un oggetto TestB, viene segnalato un errore:Nessun costruttore parametro definito per il tipo 'ClassLibrary1.TestB'.

Creare TestA e TestB tramite ActivatorUtilities non segnala errori e il metodo può essere eseguito normalmente, come mostrato di seguito:




Non c'è problema nell'usare Activator per istanziare oggetti nel framework .NET, ma nel asp.net core vengono introdotti i concetti di IOC e DI, e molti oggetti non sono costruttori senza parametri e devono essere passati nella corrispondente classe di implementazione.

Dove _services variabili statiche sono definite come segue:

CreateInstance(IServiceProvider, Type, Object[])
parametro

Fornitore
IServiceProvider
Fornitore di servizi per la risoluzione delle dipendenze

instanceType
Digitare
Il tipo da attivare

Parametri
Oggetto[]
Parametri del costruttore che non sono forniti dal fornitore


Riferimento:Il login del link ipertestuale è visibile.

(Fine)




Precedente:Analisi della sicurezza OAuth 2.0 su dispositivi mobili e desktop e meccanismo CodeVerifier
Prossimo:Usa JSC per generare una dll in JavaScript per le chiamate C#
Pubblicato su 22/09/2021 20:31:33 |
Impara a imparare...
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com