Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menyelesaikan Perkhidmatan dalam ASP.NET Core DI Beyond the IServiceCollection?

Bagaimanakah Saya Boleh Menyelesaikan Perkhidmatan dalam ASP.NET Core DI Beyond the IServiceCollection?

Linda Hamilton
Lepaskan: 2025-01-17 08:51:13
asal
728 orang telah melayarinya

How Can I Resolve Services in ASP.NET Core DI Beyond the IServiceCollection?

Suntikan Ketergantungan Teras ASP.NET: Mengakses Perkhidmatan Di Luar IServiceCollection

Dalam Teras ASP.NET, IServiceCollection adalah penting untuk mendaftarkan tanggungan dalam sistem suntikan tanggungan (DI). Walau bagaimanapun, situasi mungkin timbul di mana anda perlu menyelesaikan perkhidmatan secara terus, memintas suntikan standard.

Mengakses Perkhidmatan Terus daripada IServiceCollection

IServiceCollection itu sendiri tidak menawarkan resolusi perkhidmatan; tujuannya adalah semata-mata untuk mengkonfigurasi bekas DI. Setelah dikonfigurasikan, bekas ini diubah menjadi IServiceProvider.

Menyuntik Penyedia Perkhidmatan

Untuk resolusi perkhidmatan manual, masukkan IServiceProvider ke dalam kelas anda. Kedua-dua IApplicationBuilder dan HttpContext menyediakan akses melalui hartanah ApplicationServices dan RequestServices mereka, masing-masing.

Menggunakan Penyedia Perkhidmatan

IServiceProvider menawarkan GetService(Type type) untuk mendapatkan semula perkhidmatan berdasarkan jenisnya. Untuk kemudahan, gunakan kaedah sambungan seperti GetService<TService>() (memerlukan using Microsoft.Extensions.DependencyInjection;).

Resolusi Perkhidmatan dalam Kelas Permulaan

Suntikan Kebergantungan dalam Permulaan

Kelas Startup boleh menerima kebergantungan yang disuntik dalam pembinanya, seperti IConfiguration dan IWebHostEnvironment (atau IHostingEnvironment dalam versi pra-3.0).

Dalam ConfigureServices(), gunakan perkhidmatan yang disuntik ini untuk mendaftar tanggungan selanjutnya.

Resolusi Ketergantungan Manual dalam Permulaan

Untuk menyelesaikan perkhidmatan dalam ConfigureServices(), buat perantaraan IServiceProvider daripada IServiceCollection. Ini membolehkan akses kepada perkhidmatan yang didaftarkan sehingga ketika itu.

Memanfaatkan Perkhidmatan Aplikasi

Dalam kaedah Configure(), selesaikan perkhidmatan menggunakan IApplicationBuilder.ApplicationServices. Ini mengakses perkhidmatan yang dikonfigurasikan untuk aplikasi.

Mengelakkan Anti-Corak Pencari Perkhidmatan

Penyelesaian perkhidmatan langsung biasanya tidak digalakkan kerana ia mewakili anti-corak "Pencari Perkhidmatan". Walaupun kadangkala perlu, ia harus dielakkan bila-bila masa yang sesuai untuk memihak kepada suntikan pembina.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyelesaikan Perkhidmatan dalam ASP.NET Core DI Beyond the IServiceCollection?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan