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

Bagaimana untuk mendaftar dan menyelesaikan pelbagai pelaksanaan antara muka dalam teras ASP.NET?

Susan Sarandon
Lepaskan: 2025-01-29 21:21:12
asal
398 orang telah melayarinya

How to Register and Resolve Multiple Interface Implementations in ASP.NET Core?

Mendaftar pelbagai antara muka di ASP.NET Core untuk mencapai

di Core ASP.NET, kerana kekurangan pendaftaran berasaskan kunci yang jelas, berdaftar pelbagai perkhidmatan untuk mencapai antara muka yang sama akan membawa cabaran. Berikut adalah penyelesaian yang komprehensif, yang digunakan untuk menyelesaikan masalah ini dan mengelakkan kekurangan model kilang:

Daftar untuk melaksanakan pelaksanaan tertentu

Pelbagai pelaksanaan antara muka pendaftaran, sila gunakan kaedah beberapa kali dan gunakan jenis yang berbeza:

AddTransient Parser Perkhidmatan Custom

<code class="language-csharp">services.AddTransient<ServiceA>();
services.AddTransient<ServiceB>();
services.AddTransient<ServiceC>();</code>
Salin selepas log masuk

Buat komisen tersuai yang dipanggil , ia menerima kunci rentetan dan mengembalikan contoh perkhidmatan yang sepadan:

Dalam kaedah , daftar parser tersuai: ServiceResolver

<code class="language-csharp">public delegate IService ServiceResolver(string key);</code>
Salin selepas log masuk
bergantung kepada pengguna untuk menyuntik

ConfigureServices

suntikan ke pengguna, biarkan mereka menganalisis perkhidmatan tertentu:
<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

Suntikan pembina menggunakan data statik untuk menyuntik

Untuk menyuntik data statik ke dalam pembina semasa tempoh pendaftaran, sila tentukan kaedah untuk mengembalikan contoh perkhidmatan dan menerima data yang diperlukan sebagai parameter: ServiceResolver

<code class="language-csharp">public class Consumer
{
    private readonly IService _aService;

    public Consumer(ServiceResolver serviceAccessor)
    {
        _aService = serviceAccessor("A");
    }

    public void UseServiceA()
    {
        _aService.DoTheThing();
    }
}</code>
Salin selepas log masuk
Daftar kilang sebagai satu kes untuk memastikan ia tersedia dalam keseluruhan kitaran hayat aplikasi:

Dalam kaedah , jenis perkhidmatan terikat pada kaedah kilang:

Melalui kaedah ini, anda boleh mendaftar dengan lancar dan menyelesaikan pelbagai pelaksanaan antara muka, menyuntik data statik ke dalam pembina, mengelakkan kekurangan mod kilang, dan mematuhi prinsip suntikan ketergantungan dalam teras ASP.NET.
<code class="language-csharp">public class ServiceFactory
{
    public ServiceA CreateServiceA(string efConnectionString)
    {
        return new ServiceA(efConnectionString);
    }

    // ... (其他服务的类似方法)
}</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk mendaftar dan menyelesaikan pelbagai pelaksanaan antara muka 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan