Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 2964|Jawab: 0

[Sumber] ASP.NET Dependensi inti (dua puluh lima) menyuntikkan inisialisasi malas malas

[Salin tautan]
Diposting pada 10/10/2023 21.14.31 | | | |
Persyaratan: Tambahkan layanan ASP.NET Core, suntikkan layanan melalui konstruktor, dan ingin menunda inisialisasi kelas implementasi (pemrosesan logis yang berbeda sesuai dengan informasi permintaan konteks HTTP), dan pikirkan untuk menggunakan Lazy<T> untuk malas untuk inisialisasi malas.

Resensi:

Bagaimana Lazy di C# menjaga utas tetap aman
https://www.itsvse.com/thread-10621-1-1.html

Pengoptimalan performa C#: Malas menginisialisasi malas dengan <T>penundaan
https://www.itsvse.com/thread-7700-1-1.html
Menyuntikkan langsung ke antarmuka

Konstruktor disuntikkan langsung ke layanan antarmuka, dan kodenya adalah sebagai berikut:

Urutan eksekusi adalah sebagai berikut:



Anda dapat melihat urutan eksekusi berikut: Kelas implementasi IA -> konsol HomeController -> metode indeks

Inisialisasi dengan Penundaan lambat

Jika konstruktor pengontrol mengubah IA menjadi Lambat<IA>, kesalahannya akan terlihat seperti ini:

InvalidOperationException: Unable to resolve service for type 'System.Lazy`1[WebApplication6.IA]' while attempting to activate 'WebApplication6.Controllers.HomeController'.
Kesalahan tersebut disebabkan oleh fakta bahwa kami belum mendaftar untuk layanan terkait Lazy, kami perlu mendaftarkan layanan Lazy<> generik, kodenya adalah sebagai berikut:

Tambahkan ke Layanan:

Urutan eksekusi adalah sebagai berikut:



Anda dapat melihat urutan eksekusi: HomeController console -> Index method -> kelas implementasi IA, Anda dapat melihatnyaInisialisasi penundaan antarmuka IAakan membuat instance objek implementasi IA saat dipanggil.

(Akhir)





Mantan:CIDR: Baca deskripsi alamat CIDR dalam satu artikel
Depan:Front-end menyimpan paket localForage dari IndexedDB
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com