ASP.NET Core의 ConfigureServices
메서드에서 서비스를 수동으로 해결
ASP.NET Core는 IServiceCollection
인터페이스를 사용하여 DI(종속성 주입) 컨테이너를 빌드합니다. 한번 구축되면 서비스를 해결할 수 있는 IServiceProvider
인스턴스로 구성됩니다. 이 문서에서는 ConfigureServices
메서드에서 인스턴스를 수동으로 구문 분석하는 방법을 안내합니다.
의존성 삽입
ConfigureServices
메서드는 서비스 주입을 허용하지 않으므로 Startup
, IConfiguration
및 IWebHostEnvironment
과 같은 ILoggerFactory
클래스의 생성자에 서비스를 주입할 수 있습니다.
<code class="language-csharp">public Startup(IConfiguration configuration) => Configuration = configuration; public void ConfigureServices(IServiceCollection services) => services.AddScoped<IFooService>();</code>
Configure()
IApplicationBuilder
의 ApplicationServices
속성을 사용하여 Configure()
메서드에서 서비스를 수동으로 확인할 수 있습니다.
<code class="language-csharp">public void Configure(IApplicationBuilder app) { var serviceProvider = app.ApplicationServices; var fooService = serviceProvider.GetService<IFooService>(); }</code>
ConfigureServices()
ConfigureServices
의 서비스를 확인하려면 BuildServiceProvider()
을 사용하여 해당 지점까지 등록된 서비스에 액세스할 수 있는 중간 IServiceProvider
을 구성하세요.
<code class="language-csharp">public void ConfigureServices(IServiceCollection services) { services.AddSingleton<IFooService>(); var sp = services.BuildServiceProvider(); var fooService = sp.GetService<IFooService>(); }</code>
경고:
ConfigureServices
에서는 애플리케이션 서비스 구성에 중점을 두어야 하므로 서비스 확인을 피하세요. IConfiguration
의 값을 인스턴스에 수동으로 바인딩하거나 AddSingleton
/AddScoped
/AddTransient
의 오버로드를 사용하여 인스턴스를 느리게 생성하는 것을 고려해 보세요.
수동으로 서비스 확인(서비스 로케이터)은 패턴에 어긋나므로 주의해서 사용해야 합니다.
위 내용은 ASP.NET Core의 `ConfigureServices` 메서드 내에서 서비스를 수동으로 확인하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!