ASP.NET Core MVC에서는 DI(종속성 주입) 메커니즘을 사용하여 애플리케이션 종속성 생성 및 수명 주기를 관리합니다. ConfigureServices
메서드는 일반적으로 종속성을 등록하는 데 사용되지만 처음에는 DI 컨테이너의 청사진 역할을 하는 IServiceCollection
컬렉션만 생성합니다.
서비스 인스턴스를 수동으로 해결하려면 완전히 구성된 컨테이너가 포함된 IServiceProvider
을 가져와야 합니다. 이를 달성하는 방법에는 여러 가지가 있습니다.
Startup
클래스 생성자에 서비스를 삽입하면 ConfigureServices
메서드에 내장된 서비스에 직접 액세스할 수 있습니다. 예: IConfiguration
:
<code class="language-csharp">public class Startup { public Startup(IConfiguration configuration) { Configuration = configuration; } public IConfiguration Configuration { get; } public void ConfigureServices(IServiceCollection services) { // 在此处使用 Configuration } }</code>
Configure
메소드에서 IApplicationBuilder
는 IServiceProvider
:
<code class="language-csharp">public void Configure(IApplicationBuilder app) { var serviceProvider = app.ApplicationServices; var hostingEnv = serviceProvider.GetService<IWebHostEnvironment>(); }</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>
종속성(서비스 로케이터)의 수동 해결은 일반적으로 유지 관리 가능성과 테스트 가능성을 저하시킬 수 있으므로 권장되지 않습니다. 가능할 때마다 종속성을 주입하는 것을 선호하세요.
위 내용은 ConfigureServices 내에서 ASP.NET Core DI 인스턴스를 어떻게 확인할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!