Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 36608|Svar: 1

[.NET Core] ASP.NET Core (iii) Skapa instanser dynamiskt med hjälp av ActivatorUtilities

[Kopiera länk]
Publicerad på 2020-12-01 13:50:31 | | | |
Recension:

ASP.NET Core (1) använder Redis-cachelagring
https://www.itsvse.com/thread-9393-1-1.html

ASP.NET Core (2) Starta om applikationen via kod
https://www.itsvse.com/thread-9480-1-1.html

Vanligtvis är ett instansierat objekt en instansiering av en klass med det nya nyckelordet

C# skapar dynamiskt en instans av en klass i klassfabriken med följande metoder:


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


Först definierar vi ett ITest-gränssnitt enligt följande:

Definiera två implementeringsklasser, nämligen: TestA och TestB, och koden är följande:

där TestB har en icke-tom konstruktör

GetUserName-metoden i TestB-klassen behöver läsa konfigurationsfilen via IConfiguration och sedan sy ihop den med de inkommande parametrarna för att returnera returvärdet.

Konfigurationsfilen är som följer:



Vi skapar objekt genom att dynamiskt ladda dll:n, skapa dem genom reflektion och instansiera dem via Activator respektive ActivatorUtilities, med följande kod:

Resultat för retur:

Ret
"Hej itsvse.com"
exempel. Meddelande
"Ingen parameterlös konstruktör definierad för typen 'ClassLibrary1.TestB'."

Ret
"Hej itsvse.com"
Ret
"Aaaa itsvse.com"

När Activator används för att skapa ett TestB-objekt rapporteras ett fel:Ingen parameterlös konstruktor definierad för typen 'ClassLibrary1.TestB'.

Att skapa TestA och TestB via ActivatorUtilities rapporterar inget fel, och metoden kan köras normalt, som visas nedan:




Det är inget problem att använda Activator för att instansiera objekt i .NET-ramverket, men i asp.net kärna introduceras begreppen IOC och DI, och många objekt är inte parameterlösa konstruktörer utan måste skickas i motsvarande implementeringsklass.

Där _services statiska variabler definieras enligt följande:

CreateInstance(IServiceProvider, Type, Object[])
parameter

Leverantör
IServiceProvider
Tjänsteleverantör för att lösa beroenden

instanceType
Typ
Typen som aktiveras

Parametrar
Syfte[]
Konstruktörparametrar som inte tillhandahålls av leverantören


Hänvisning:Inloggningen med hyperlänken är synlig.

(Slut)




Föregående:Mobil- och datorbaserad OAuth 2.0-säkerhetsanalys och CodeVerifier-mekanism
Nästa:Använd JSC för att generera en dll i JavaScript för C#-anrop
Publicerad på 2021-09-22 20:31:33 |
Lär dig att lära dig...
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com