Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 36608|Antwoord: 1

[.NET Core] ASP.NET Core (iii) Maakt dynamisch instanties aan met behulp van ActivatorUtilities

[Link kopiëren]
Geplaatst op 01-12-2020 13:50:31 | | | |
Recensie:

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

ASP.NET Core (2) Herstart de applicatie via code
https://www.itsvse.com/thread-9480-1-1.html

Typisch is een geïnstantieerd object een instantie van een klasse met het nieuwe trefwoord

C# creëert dynamisch een instantie van een klasse in de class factory met de volgende methoden:


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


Eerst definiëren we een ITest-interface als volgt:

Definieer twee implementatieklassen, namelijk: TestA en TestB, en de code is als volgt:

waarbij TestB een niet-lege constructor heeft

De GetUserName-methode in de TestB-klasse moet het configuratiebestand via IConfiguration lezen en het vervolgens samenvoegen met de binnenkomende parameters om de retourwaarde terug te geven.

Het configuratiebestand is als volgt:



We creëren objecten door de dll dynamisch te laden, ze te creëren door reflectie, en ze te instantiëren via respectievelijk Activator en ActivatorUtilities, met de volgende code:

Retourresultaten:

Ret
"Hallo itsvse.com"
bijv. Bericht
"Geen parameterloze constructor gedefinieerd voor type 'ClassLibrary1.TestB'."

Ret
"Hallo itsvse.com"
Ret
"aaaa itsvse.com"

Bij het gebruik van Activator om een TestB-object te maken, wordt een fout gerapporteerd:Geen parameterloze constructor gedefinieerd voor het type 'ClassLibrary1.TestB'.

Het aanmaken van TestA en TestB via ActivatorUtilities zal geen foutmelding geven en de methode kan normaal worden uitgevoerd, zoals hieronder weergegeven:




Er is geen probleem om Activator te gebruiken om objecten in het .NET-framework te instantiëren, maar in asp.net kern worden de concepten IOC en DI geïntroduceerd, en veel objecten zijn geen parameterloze constructors en moeten in de bijbehorende implementatieklasse worden doorgegeven.

Waarbij _services statische variabelen als volgt worden gedefinieerd:

CreateInstance(IServiceProvider, Type, Object[])
parameter

Aanbieder
IServiceProvider
Serviceprovider voor het oplossen van afhankelijkheden

instanceType
Type
Het type om te activeren

Parameters
Object[]
Constructorparameters die niet door de provider worden verstrekt


Referentie:De hyperlink-login is zichtbaar.

(Einde)




Vorig:Mobiele en desktop OAuth 2.0 beveiligingsanalyse en CodeVerifier-mechanisme
Volgend:Gebruik JSC om een dll in JavaScript te genereren voor C#-aanroepen
Geplaatst op 22-09-2021 20:31:33 |
Leer leren...
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com