Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk menyelesaikan pelbagai pelaksanaan antara muka yang sama dalam teras ASP.NET?

Bagaimana untuk menyelesaikan pelbagai pelaksanaan antara muka yang sama dalam teras ASP.NET?

DDD
Lepaskan: 2025-01-29 21:11:10
asal
860 orang telah melayarinya

How to Resolve Multiple Implementations of the Same Interface in ASP.NET Core?

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

pernyataan yang terperinci:
  1. Tentukan komisen untuk analisis perkhidmatan.

    IService ServiceResolver(string key) Pendaftaran Perkhidmatan:

  2. Dalam , setiap pelaksanaan khusus didaftarkan sebagai perkhidmatan sementara:

    Pemetaan jenis ke jenis: Startup.cs

    <code class="language-csharp">services.AddTransient<ServiceA>();
    services.AddTransient<ServiceB>();
    services.AddTransient<ServiceC>();</code>
    Salin selepas log masuk
    Konfigurasi mempercayakan nilai utama kepada pelaksanaan tertentu:
  3. 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>
    Salin selepas log masuk
  4. Kaedah ini menyediakan cara yang fleksibel untuk mendaftar dan menganalisis pelbagai pelaksanaan antara muka yang sama, untuk mencapai pengurusan ketergantungan yang lebih berkesan dan mematuhi DIP. Walaupun ia bukan fungsi terbina dari teras ASP.NET, ia menyediakan penyelesaian yang layak untuk cabaran DI biasa.

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan