Home >Backend Development >C++ >How Can I Manually Resolve ASP.NET Core Services in `ConfigureServices`?

How Can I Manually Resolve ASP.NET Core Services in `ConfigureServices`?

Barbara Streisand
Barbara StreisandOriginal
2025-01-17 08:41:091001browse

How Can I Manually Resolve ASP.NET Core Services in `ConfigureServices`?

Manually resolve the ASP.NET Core service in ConfigureServices

The ConfigureServices method used to configure the dependency injection container in ASP.NET Core does not provide a direct method to resolve services. To manually resolve services from this method, an alternative approach is required.

Service Provider Pattern

To resolve services, ASP.NET Core uses the service provider pattern. Once the service collection is built, it is converted into a IServiceProvider instance, allowing the services to be resolved.

Inject service provider

One way to resolve a

service is to inject an IServiceProvider instance into the constructor of the Startup class. However, this method only provides access to limited necessary services injected by the hosting layer.

Using ApplicationServices

In the Configure method, IApplicationBuilder provides the ApplicationServices attribute, which contains a service provider with access to all registered services.

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

Build an intermediate service provider

To resolve services in the ConfigureServices method, an intermediate service provider can be built from a partially built collection of services. However, this only includes services registered before this time.

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

    var sp = services.BuildServiceProvider();
    var fooService = sp.GetService<IFooService>();
}</code>

Avoid manual parsing

Manually resolving services is generally not recommended as it violates dependency injection principles. Instead, use injection or leverage service provider injection in the Configure method.

The above is the detailed content of How Can I Manually Resolve ASP.NET Core Services in `ConfigureServices`?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn