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

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

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

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 屬性,其中包含一個服務提供程序,可以存取所有已註冊的服務。

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

建構中間服務提供者

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

<code class="language-csharp">public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton<IFooService, FooService>();

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

避免手動解析

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

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

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