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

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

Barbara Streisand
發布: 2025-01-17 08:41:09
原創
1103 人瀏覽過

How Can I Manually Resolve ASP.NET Core Services in `ConfigureServices`?

ConfigureServices中手動解析ASP.NET Core服務

ASP.NET Core 中用於配置依賴注入容器的 ConfigureServices 方法不提供直接解析服務的方法。 若要從此方法手動解析服務,需要採用替代方法。

服務提供者模式

為了解析服務,ASP.NET Core 使用服務提供者模式。 服務集合建置完成後,它將轉換為 IServiceProvider 實例,允許解析服務。

注入服務提供者

解析服務的一種方法是將 IServiceProvider 實例注入到 Startup 類別的建構子中。 但是,此方法僅提供對託管層注入的有限的必要服務的存取。

使用ApplicationServices

Configure 方法中,IApplicationBuilder 提供 ApplicationServices 屬性,其中包含一個服務提供程序,可以存取所有已註冊的服務。

public void Configure(IApplicationBuilder app)
{
    var serviceProvider = app.ApplicationServices;
    var fooService = serviceProvider.GetService<IFooService>();
}
登入後複製

建構中間服務提供者

要在 ConfigureServices 方法中解析服務,可以從部分建構的服務集合中建構中間服務提供者。 但是,這僅包括在此之前註冊的服務。

public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton<IFooService, FooService>();

    var sp = services.BuildServiceProvider();
    var fooService = sp.GetService<IFooService>();
}
登入後複製

避免手動解析

通常不建議手動解析服務,因為它違反了依賴注入原則。 相反,請使用注入或在 Configure 方法中利用服務提供者註入。

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

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