Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk menyelesaikan pelbagai pelaksanaan antara muka yang sama dalam teras ASP.NET?
Selesaikan pelbagai pendaftaran berdaftar di Core ASP.NET
Asp.net Core sendiri tidak menyokong pelaksanaan antara muka yang sama yang boleh dibezakan oleh perbezaan utama. Untuk mengatasi had ini, pemaju bergantung kepada kaedah alternatif, seperti model kilang. Walau bagaimanapun, penyelesaian ini akan membawa kepada peningkatan pergantungan dan boleh melanggar prinsip penyongsangan pergantungan (DIP).
Penyelesaian yang lebih berkesan ialah menggunakan Suruhanjaya Dikongsi
untuk memetakan nilai utama kepada pelaksanaan tertentu. Berikut adalah langkah tertentu:
ServiceResolver
Tentukan komisen untuk analisis perkhidmatan.
IService ServiceResolver(string key)
Pendaftaran Perkhidmatan:
Pemetaan jenis ke jenis: Startup.cs
<code class="language-csharp">services.AddTransient<ServiceA>(); services.AddTransient<ServiceB>(); services.AddTransient<ServiceC>();</code>Konfigurasi mempercayakan nilai utama kepada pelaksanaan tertentu:
Penggunaan Perkhidmatan:
ServiceResolver
suntikan ke dalam kelas yang perlu didaftarkan. Contohnya:
<code class="language-csharp">services.AddTransient<ServiceResolver>(serviceProvider => key => { switch (key) { case "A": return serviceProvider.GetService<ServiceA>(); case "B": return serviceProvider.GetService<ServiceB>(); case "C": return serviceProvider.GetService<ServiceC>(); default: throw new KeyNotFoundException(); } });</code>
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan pelbagai pelaksanaan antara muka yang sama dalam teras ASP.NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!