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

Vue: 2964|Répondre: 0

[Source] ASP.NET Les dépendances de base (vingt-cinq) injectent une initialisation paresseuse paresseuse

[Copié le lien]
Publié sur 10/10/2023 21:14:31 | | | |
Exigences : Ajouter des services ASP.NET Core, injecter des services via des constructeurs, et souhaiter retarder l’initialisation de la classe d’implémentation (traitement logique différent selon les informations de requête contextuelle HTTP), et penser à utiliser Lazy<T> pour lazy pour lazy pour lazy initialisation.

Révision:

Comment la paresse en C# protège les threads
https://www.itsvse.com/thread-10621-1-1.html

Optimisation des performances C# : Lazy initialise lazy avec <T>un délai
https://www.itsvse.com/thread-7700-1-1.html
Injecter directement dans l’interface

Le constructeur est injecté directement dans le service d’interface, et le code est le suivant :

L’ordre d’exécution est le suivant :



Vous pouvez voir l’ordre d’exécution suivant : IA implementation class -> HomeController console -> index method

Initialisation avec un délai paresseux

Si le constructeur contrôleur change IA en Lazy<IA>, l’erreur ressemblera à ceci :

InvalidOperationException: Unable to resolve service for type 'System.Lazy`1[WebApplication6.IA]' while attempting to activate 'WebApplication6.Controllers.HomeController'.
L’erreur est due au fait que nous ne nous sommes pas inscrits aux services liés à la paresse, nous devons enregistrer un service générique <> paresseux, le code est le suivant :

Ajouter au service :

L’ordre d’exécution est le suivant :



Vous pouvez voir l’ordre d’exécution : console HomeController -> méthode Index -> classe d’implémentation IA, vous pouvez le voirInitialisation du délai de l’interface IAinstanciera l’objet d’implémentation IA lorsqu’il sera appelé.

(Fin)





Précédent:CIDR : Lisez la description de l’adresse CIDR dans un article
Prochain:L’interface stocke le forfait localForage d’IndexedDB
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