ASP.NET 코어 종속성 주입: IServiceCollection 외부 서비스 액세스
ASP.NET Core에서 IServiceCollection
는 DI(종속성 주입) 시스템 내에 종속성을 등록하는 데 중요합니다. 그러나 표준 주입을 우회하여 서비스를 직접 해결해야 하는 상황이 발생할 수 있습니다.
IServiceCollection에서 직접 서비스에 액세스
IServiceCollection
자체는 서비스 해결을 제공하지 않습니다. 그 목적은 오로지 DI 컨테이너를 구성하는 것입니다. 일단 구성되면 이 컨테이너는 IServiceProvider
.
ServiceProvider 삽입
수동 서비스 해결의 경우 IServiceProvider
를 클래스에 삽입하세요. IApplicationBuilder
및 HttpContext
모두 각각 ApplicationServices
및 RequestServices
속성을 통해 액세스를 제공합니다.
서비스 제공업체 활용
IServiceProvider
에서는 유형에 따라 서비스를 검색할 수 있도록 GetService(Type type)
을 제공합니다. 편의를 위해 GetService<TService>()
(using Microsoft.Extensions.DependencyInjection;
필요)와 같은 확장 방법을 사용합니다.
창업교실 내 서비스 해결
스타트업의 의존성 주입
Startup
클래스는 IConfiguration
및 IWebHostEnvironment
(또는 3.0 이전 버전에서는 IHostingEnvironment
)과 같은 생성자에 주입된 종속성을 허용할 수 있습니다.
ConfigureServices()
내에서 삽입된 서비스를 활용하여 추가 종속성을 등록하세요.
시작 시 수동 종속성 해결
ConfigureServices()
내에서 서비스를 해결하려면 IServiceProvider
에서 중간 IServiceCollection
을 만듭니다. 이를 통해 해당 시점까지 등록된 서비스에 액세스할 수 있습니다.
애플리케이션 서비스 활용
Configure()
메소드에서는 IApplicationBuilder.ApplicationServices
을 사용하여 서비스를 해결합니다. 이는 애플리케이션에 대해 구성된 서비스에 액세스합니다.
서비스 로케이터 안티 패턴 방지
직접 서비스 해결은 "서비스 로케이터" 안티 패턴을 나타내므로 일반적으로 권장되지 않습니다. 때로는 필요하지만 생성자 주입을 위해 가능하면 피해야 합니다.
위 내용은 IServiceCollection 이외의 ASP.NET Core DI에서 서비스를 어떻게 확인할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!