首页 >后端开发 >C++ >如何在'ConfigureServices”中手动解析 ASP.NET Core 服务?

如何在'ConfigureServices”中手动解析 ASP.NET Core 服务?

Barbara Streisand
Barbara Streisand原创
2025-01-17 08:41:091006浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn