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
Lepaskan: 2025-01-17 08:46:08
asal
367 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan