Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menyelesaikan Perkhidmatan Teras ASP.NET secara Manual dalam `ConfigureServices`?

Bagaimanakah Saya Boleh Menyelesaikan Perkhidmatan Teras ASP.NET secara Manual dalam `ConfigureServices`?

Barbara Streisand
Barbara Streisandasal
2025-01-17 08:41:091006semak imbas

How Can I Manually Resolve ASP.NET Core Services in `ConfigureServices`?

Selesaikan perkhidmatan Teras ASP.NET secara manual dalam ConfigureServices

Kaedah ConfigureServices yang digunakan untuk mengkonfigurasi bekas suntikan kebergantungan dalam ASP.NET Core tidak menyediakan kaedah langsung untuk menyelesaikan perkhidmatan. Untuk menyelesaikan perkhidmatan secara manual daripada kaedah ini, pendekatan alternatif diperlukan.

Corak Pembekal Perkhidmatan

Untuk menyelesaikan perkhidmatan, ASP.NET Core menggunakan corak pembekal perkhidmatan. Setelah koleksi perkhidmatan dibina, ia ditukar menjadi contoh IServiceProvider, membolehkan perkhidmatan diselesaikan.

Pembekal perkhidmatan suntikan

Satu cara untuk menyelesaikan perkhidmatan

ialah menyuntik contoh IServiceProvider ke dalam pembina kelas Startup. Walau bagaimanapun, kaedah ini hanya menyediakan akses kepada perkhidmatan terhad yang diperlukan yang disuntik oleh lapisan pengehosan.

Menggunakan ApplicationServices

Dalam kaedah Configure, IApplicationBuilder menyediakan atribut ApplicationServices, yang mengandungi pembekal perkhidmatan dengan akses kepada semua perkhidmatan berdaftar.

<code class="language-csharp">public void Configure(IApplicationBuilder app)
{
    var serviceProvider = app.ApplicationServices;
    var fooService = serviceProvider.GetService<IFooService>();
}</code>

Bina penyedia perkhidmatan perantaraan

Untuk menyelesaikan perkhidmatan dalam kaedah ConfigureServices, penyedia perkhidmatan perantaraan boleh dibina daripada koleksi perkhidmatan yang dibina separa. Walau bagaimanapun, ini hanya termasuk perkhidmatan yang didaftarkan sebelum masa ini.

<code class="language-csharp">public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton<IFooService, FooService>();

    var sp = services.BuildServiceProvider();
    var fooService = sp.GetService<IFooService>();
}</code>

Elakkan menghurai manual

Perkhidmatan menyelesaikan secara manual biasanya tidak disyorkan kerana ia melanggar prinsip suntikan pergantungan. Sebaliknya, gunakan suntikan atau leverage suntikan pembekal perkhidmatan dalam kaedah Configure.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyelesaikan Perkhidmatan Teras ASP.NET secara Manual dalam `ConfigureServices`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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