Suntikan Kebergantungan: Ralat Penyelesaian Perkhidmatan
Artikel ini menangani ralat biasa yang dihadapi apabila bekas suntikan kebergantungan gagal menyelesaikan perkhidmatan yang diperlukan semasa pengaktifan kelas. Bekas tidak boleh mencipta objek yang sepadan dengan jenis yang diminta.
Menyelesaikan Masalah Kegagalan Suntikan Ketergantungan
Beberapa faktor boleh menyebabkan kegagalan penyelesaian perkhidmatan:
Tipo Pembina: Jika ralat menghala ke kelas tertentu, semak semula pembina pengawal untuk mengesan kesilapan taip. Pembina harus menerima antara muka perkhidmatan, bukan pelaksanaan kelas konkrit.
Salah:
public BlogController(BloggerRepository repository)
Betul:
public BlogController(IBloggerRepository repository)
Pendaftaran Perkhidmatan Tiada: Jika ralat tidak menyatakan kelas konkrit, perkhidmatan mungkin tidak didaftarkan dalam Startup.cs
. Gunakan AddScoped
untuk mendaftarkan antara muka perkhidmatan dan pelaksanaannya.
Contoh:
services.AddScoped<IBloggerRepository, BloggerRepository>();
Pendaftaran Perkhidmatan Tersuai: Sesetengah perkhidmatan memerlukan kaedah pendaftaran tersuai. Rujuk dokumentasi perpustakaan untuk proses pendaftaran yang betul.
Contoh:
services.AddHttpContextAccessor(); // From Microsoft.AspNetCore.Http
Dengan menyemak perkara ini dengan teliti, anda boleh nyahpepijat dan menyelesaikan ralat suntikan pergantungan dengan berkesan, memastikan aplikasi anda membuat instantiat objek yang diperlukan dengan betul.
Atas ialah kandungan terperinci Mengapa Suntikan Ketergantungan Saya Gagal Menyelesaikan Perkhidmatan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!