首頁 > 後端開發 > C++ > 如何解析ConfigureServices中的ASP.NET Core DI實例?

如何解析ConfigureServices中的ASP.NET Core DI實例?

Susan Sarandon
發布: 2025-01-17 08:37:07
原創
220 人瀏覽過

How Can I Resolve ASP.NET Core DI Instances within ConfigureServices?

在 ASP.NET Core MVC 中,依賴注入 (DI) 機制用於管理應用程式相依性的建立和生命週期。 ConfigureServices 方法通常用於註冊依賴項,但它最初只建立一個 IServiceCollection,該集合充當 DI 容器的藍圖。

要手動解析服務實例,我們需要取得一個 IServiceProvider,它包含完全組合的容器。有幾種方法可以實現這一點:

透過建構函式註入依賴項

將服務注入 Startup 類別的建構子允許在 ConfigureServices 方法中直接存取內建服務,例如 IConfiguration

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

    public IConfiguration Configuration { get; }

    public void ConfigureServices(IServiceCollection services)
    {
        // 在此处使用 Configuration
    }
}</code>
登入後複製

在 Configure 方法中手動解析依賴項

Configure 方法中,IApplicationBuilder 提供對 IServiceProvider 的直接存取:

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

在 ConfigureServices 中解析依賴項

要在 ConfigureServices 中直接解析依賴項,需要使用中間服務提供者:

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

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

注意事項

通常不建議手動解析依賴項(服務定位器),因為它可能會降低可維護性和可測試性。盡可能優先註入依賴項。

以上是如何解析ConfigureServices中的ASP.NET Core DI實例?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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