>백엔드 개발 >C++ >`ConfigureServices`에서 ASP.NET Core 서비스를 수동으로 해결하려면 어떻게 해야 합니까?

`ConfigureServices`에서 ASP.NET Core 서비스를 수동으로 해결하려면 어떻게 해야 합니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-17 08:41:091001검색

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 인스턴스를 삽입하는 것입니다. 그러나 이 방법은 호스팅 계층에서 삽입한 제한된 필수 서비스에만 액세스를 제공합니다.

ApplicationService 사용

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으로 문의하세요.