Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menyelesaikan Perkhidmatan Secara Manual dalam Kaedah `ConfigureServices` Teras ASP.NET?
Selesaikan perkhidmatan secara manual dalam kaedah ConfigureServices
Teras ASP.NET
ASP.NET Core menggunakan antara muka IServiceCollection
untuk membina bekas suntikan kebergantungan (DI). Setelah dibina, ia digubah menjadi contoh IServiceProvider
yang membolehkan anda menyelesaikan perkhidmatan. Artikel ini membimbing cara menghuraikan kejadian secara manual dalam kaedah ConfigureServices
.
Suntikan kebergantungan
KaedahConfigureServices
tidak membenarkan suntikan perkhidmatan, jadi anda boleh menyuntik perkhidmatan ke dalam pembina kelas Startup
, seperti IConfiguration
, IWebHostEnvironment
dan ILoggerFactory
.
<code class="language-csharp">public Startup(IConfiguration configuration) => Configuration = configuration; public void ConfigureServices(IServiceCollection services) => services.AddScoped<IFooService>();</code>
Selesaikan kebergantungan secara manual dalam Configure()
Anda boleh menyelesaikan perkhidmatan secara manual dalam kaedah IApplicationBuilder
menggunakan atribut ApplicationServices
Configure()
:
<code class="language-csharp">public void Configure(IApplicationBuilder app) { var serviceProvider = app.ApplicationServices; var fooService = serviceProvider.GetService<IFooService>(); }</code>
Selesaikan kebergantungan secara manual dalam ConfigureServices()
Untuk menyelesaikan perkhidmatan dalam ConfigureServices
, gunakan BuildServiceProvider()
untuk membina perantaraan IServiceProvider
untuk mengakses perkhidmatan yang didaftarkan sehingga ketika itu:
<code class="language-csharp">public void ConfigureServices(IServiceCollection services) { services.AddSingleton<IFooService>(); var sp = services.BuildServiceProvider(); var fooService = sp.GetService<IFooService>(); }</code>
Amaran:
Elakkan menyelesaikan perkhidmatan dalam ConfigureServices
kerana ia harus menumpukan pada mengkonfigurasi perkhidmatan aplikasi. Pertimbangkan untuk mengikat nilai secara manual daripada IConfiguration
kepada tika, atau menggunakan lebihan AddSingleton
/AddScoped
/AddTransient
untuk mencipta tika dengan malas.
Perkhidmatan penyelesaian secara manual (pencari perkhidmatan) adalah anti-corak dan harus digunakan dengan berhati-hati.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyelesaikan Perkhidmatan Secara Manual dalam Kaedah `ConfigureServices` Teras ASP.NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!