Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menyelesaikan Perkhidmatan Teras ASP.NET secara Manual dalam `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!