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

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

Barbara Streisand
发布: 2025-01-17 08:41:09
原创
1104 人浏览过

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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板