> 백엔드 개발 > C++ > IServiceCollection 이외의 ASP.NET Core DI에서 서비스를 어떻게 확인할 수 있나요?

IServiceCollection 이외의 ASP.NET Core DI에서 서비스를 어떻게 확인할 수 있나요?

Linda Hamilton
풀어 주다: 2025-01-17 08:51:13
원래의
728명이 탐색했습니다.

How Can I Resolve Services in ASP.NET Core DI Beyond the IServiceCollection?

ASP.NET 코어 종속성 주입: IServiceCollection 외부 서비스 액세스

ASP.NET Core에서 IServiceCollection는 DI(종속성 주입) 시스템 내에 종속성을 등록하는 데 중요합니다. 그러나 표준 주입을 우회하여 서비스를 직접 해결해야 하는 상황이 발생할 수 있습니다.

IServiceCollection에서 직접 서비스에 액세스

IServiceCollection 자체는 서비스 해결을 제공하지 않습니다. 그 목적은 오로지 DI 컨테이너를 구성하는 것입니다. 일단 구성되면 이 컨테이너는 IServiceProvider.

로 변환됩니다.

ServiceProvider 삽입

수동 서비스 해결의 경우 IServiceProvider를 클래스에 삽입하세요. IApplicationBuilderHttpContext 모두 각각 ApplicationServicesRequestServices 속성을 ​​통해 액세스를 제공합니다.

서비스 제공업체 활용

IServiceProvider에서는 유형에 따라 서비스를 검색할 수 있도록 GetService(Type type)을 제공합니다. 편의를 위해 GetService<TService>()(using Microsoft.Extensions.DependencyInjection; 필요)와 같은 확장 방법을 사용합니다.

창업교실 내 서비스 해결

스타트업의 의존성 주입

Startup 클래스는 IConfigurationIWebHostEnvironment(또는 3.0 이전 버전에서는 IHostingEnvironment)과 같은 생성자에 주입된 종속성을 허용할 수 있습니다.

ConfigureServices() 내에서 삽입된 서비스를 활용하여 추가 종속성을 등록하세요.

시작 시 수동 종속성 해결

ConfigureServices() 내에서 서비스를 해결하려면 IServiceProvider에서 중간 IServiceCollection을 만듭니다. 이를 통해 해당 시점까지 등록된 서비스에 액세스할 수 있습니다.

애플리케이션 서비스 활용

Configure() 메소드에서는 IApplicationBuilder.ApplicationServices을 사용하여 서비스를 해결합니다. 이는 애플리케이션에 대해 구성된 서비스에 액세스합니다.

서비스 로케이터 안티 패턴 방지

직접 서비스 해결은 "서비스 로케이터" 안티 패턴을 나타내므로 일반적으로 권장되지 않습니다. 때로는 필요하지만 생성자 주입을 위해 가능하면 피해야 합니다.

위 내용은 IServiceCollection 이외의 ASP.NET Core DI에서 서비스를 어떻게 확인할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿