Dalam ASP.NET Core MVC, mekanisme suntikan kebergantungan (DI) digunakan untuk mengurus penciptaan dan kitaran hayat kebergantungan aplikasi. Kaedah ConfigureServices
biasanya digunakan untuk mendaftar kebergantungan, tetapi pada mulanya ia hanya mencipta koleksi IServiceCollection
yang bertindak sebagai pelan tindakan untuk bekas DI.
Untuk menyelesaikan contoh perkhidmatan secara manual, kami perlu mendapatkan IServiceProvider
yang mengandungi bekas yang terdiri sepenuhnya. Terdapat beberapa cara untuk mencapai ini:
Menyuntik perkhidmatan ke dalam pembina kelas Startup
membenarkan akses terus kepada perkhidmatan terbina dalam dalam kaedah ConfigureServices
, mis
IConfiguration
<code class="language-csharp">public class Startup { public Startup(IConfiguration configuration) { Configuration = configuration; } public IConfiguration Configuration { get; } public void ConfigureServices(IServiceCollection services) { // 在此处使用 Configuration } }</code>
menyediakan akses terus kepada Configure
: IApplicationBuilder
IServiceProvider
<code class="language-csharp">public void Configure(IApplicationBuilder app) { var serviceProvider = app.ApplicationServices; var hostingEnv = serviceProvider.GetService<IWebHostEnvironment>(); }</code>
ConfigureServices
<code class="language-csharp">public void ConfigureServices(IServiceCollection services) { services.AddSingleton<IFooService, FooService>(); var sp = services.BuildServiceProvider(); var fooService = sp.GetService<IFooService>(); }</code>
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyelesaikan Kejadian ASP.NET Teras DI dalam ConfigureServices?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!