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

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

Barbara Streisand
Barbara Streisandasal
2025-01-17 08:46:08370semak imbas

How Can I Manually Resolve Services within ASP.NET Core's `ConfigureServices` Method?

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

Kaedah

ConfigureServices 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!

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