首頁 > 後端開發 > C++ > 如何在 ASP.NET Core 的「ConfigureServices」方法中手動解析服務?

如何在 ASP.NET Core 的「ConfigureServices」方法中手動解析服務?

Barbara Streisand
發布: 2025-01-17 08:46:08
原創
366 人瀏覽過

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

在ASP.NET Core的ConfigureServices方法中手動解析服務

ASP.NET Core使用IServiceCollection介面建構依賴注入(DI)容器。建置完成後,它被組合成一個IServiceProvider實例,允許您解析服務。本文指導如何在ConfigureServices方法中手動解析實例。

注入依賴項

ConfigureServices方法不允許服務注入,因此您可以將服務注入到Startup類別的建構函式中,例如IConfigurationIWebHostEnvironmentILoggerFactory

<code class="language-csharp">public Startup(IConfiguration configuration) => Configuration = configuration;

public void ConfigureServices(IServiceCollection services) => services.AddScoped<IFooService>();</code>
登入後複製

Configure()中手動解析依賴項

您可以使用IApplicationBuilderApplicationServices屬性在Configure()方法中手動解析服務:

<code class="language-csharp">public void Configure(IApplicationBuilder app)
{
    var serviceProvider = app.ApplicationServices;
    var fooService = serviceProvider.GetService<IFooService>();
}</code>
登入後複製

ConfigureServices()中手動解析依賴項

要在ConfigureServices中解析服務,請使用BuildServiceProvider()建立一個中間IServiceProvider來存取到那時為止註冊的服務:

<code class="language-csharp">public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton<IFooService>();
    var sp = services.BuildServiceProvider();
    var fooService = sp.GetService<IFooService>();
}</code>
登入後複製

警告:

避免在ConfigureServices中解析服務,因為它應該專注於配置應用程式服務。考慮手動將值從IConfiguration綁定到實例,或使用AddSingleton/AddScoped/AddTransient的重載來延遲建立實例。

手動解析服務(服務定位器)是一種反模式,應該謹慎使用。

以上是如何在 ASP.NET Core 的「ConfigureServices」方法中手動解析服務?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板