」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在“配置服務”中手動解析ASP.NET核心服務?

如何在“配置服務”中手動解析ASP.NET核心服務?

發佈於2025-03-22
瀏覽:744

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();
}

構建中間服務提供程序

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

public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton();

    var sp = services.BuildServiceProvider();
    var fooService = sp.GetService();
}

避免手動解析

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

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3