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