Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 36608|Répondre: 1

[.NET Core] ASP.NET Core (iii) Créer dynamiquement des instances à l’aide d’ActivatorUtilities

[Copié le lien]
Publié sur 01/12/2020 13:50:31 | | | |
Révision:

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

ASP.NET Core (2) Redémarrer l’application par code
https://www.itsvse.com/thread-9480-1-1.html

Typiquement, un objet instancié est une instanciation d’une classe avec le nouveau mot-clé

C# crée dynamiquement une instance d’une classe dans la chaîne de classes en utilisant les méthodes suivantes :


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


Tout d’abord, nous définissons une interface ITest comme suit :

Définissons deux classes d’implémentation, à savoir : TestA et TestB, et le code est le suivant :

où TestB possède un constructeur non vide

La méthode GetUserName dans la classe TestB doit lire le fichier de configuration via IConfiguration, puis le assembler avec les paramètres entrants pour retourner la valeur de retour.

Le fichier de configuration est le suivant :



Nous créons des objets en chargeant dynamiquement la DLL, en les créant par réflexion, puis en les instanciant respectivement via Activator et ActivatorUtilities, avec le code suivant :

Résultats du retour :

ret
« Bonjour itsvse.com »
ex. Message
« Aucun constructeur sans paramètre défini pour le type 'ClassLibrary1.TestB'. »

ret
« Bonjour itsvse.com »
ret
« Aaaa itsvse.com »

Lors de l’utilisation d’Activator pour créer un objet TestB, une erreur est signalée :Aucun constructeur sans paramètre défini pour le type 'ClassLibrary1.TestB'.

La création de TestA et TestB via ActivatorUtilities ne signalera pas d’erreur, et la méthode peut être exécutée normalement, comme indiqué ci-dessous :




Il n’y a aucun problème à utiliser Activator pour instancier des objets dans le framework .NET, mais au cœur asp.net, les concepts d’IOC et DI sont introduits, et de nombreux objets ne sont pas des constructeurs sans paramètre et doivent être passés dans la classe d’implémentation correspondante.

Où _services variables statiques sont définies comme suit :

CreateInstance(IServiceProvider, Type, Object[])
paramètre

Fournisseur
IServiceProvider
Fournisseur de services pour la résolution des dépendances

instanceType
Type
Le type à activer

Paramètres
Objet[]
Paramètres du constructeur qui ne sont pas fournis par le fournisseur


Référence:La connexion hyperlientérée est visible.

(Fin)




Précédent:Analyse de sécurité OAuth 2.0 mobile et de bureau et mécanisme de vérification de code
Prochain:Utilisez JSC pour générer une dll en JavaScript pour les appels C#
Publié sur 22/09/2021 20:31:33 |
Apprends à apprendre...
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com