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

Bekijken: 2964|Antwoord: 0

[Bron] ASP.NET Core (vijfentwintig) afhankelijkheden injecteren Lazy lazy lazy initialisatie

[Link kopiëren]
Geplaatst op 10-10-2023 21:14:31 | | | |
Vereisten: Voeg services toe ASP.NET Core, injecteer services via constructors en wil de initialisatie van de implementatieklasse uitstellen (verschillende logische verwerking afhankelijk van de HTTP-contextvraaginformatie), en denk aan het gebruik van Lazy<T> voor lui voor lui initialisatie.

Recensie:

Hoe Lazy in C# threads veilig houdt
https://www.itsvse.com/thread-10621-1-1.html

C# prestatieoptimalisatie: Lazy initialiseert lazy met <T>een vertraging
https://www.itsvse.com/thread-7700-1-1.html
Injecteer direct in de interface

De constructor wordt direct in de interfaceservice geïnjecteerd, en de code is als volgt:

De uitvoeringsvolgorde is als volgt:



Je kunt de volgende uitvoervolgorde zien: IA implementatieklasse -> HomeController-console -> indexmethode

Initialiseer met Lazy delay

Als de controller-constructor IA verandert naar Lazy<IA>, ziet de fout er als volgt uit:

InvalidOperationException: Unable to resolve service for type 'System.Lazy`1[WebApplication6.IA]' while attempting to activate 'WebApplication6.Controllers.HomeController'.
De fout komt doordat we ons niet hebben geregistreerd voor Lazy-gerelateerde diensten, we moeten een Lazy<> generieke dienst registreren, de code is als volgt:

Toevoegen aan service:

De uitvoeringsvolgorde is als volgt:



Je kunt de uitvoervolgorde zien: HomeController console -> Index method -> IA implementatieklasse, je kunt het zienIA-interfacevertragingsinitialisatiezal het IA-implementatieobject instantiëren wanneer het wordt aangeroepen.

(Einde)





Vorig:CIDR: Lees de beschrijving van het CIDR-adres in een artikel
Volgend:De front-end slaat het localForage-pakket van IndexedDB op
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