ConfigureServices
ASP.NET Core で依存関係注入コンテナーを構成するために使用される ConfigureServices
メソッドは、サービスを解決する直接的な方法を提供しません。 この方法でサービスを手動で解決するには、別のアプローチが必要です。
サービスプロバイダーパターン
サービスを解決するために、ASP.NET Core はサービス プロバイダー パターンを使用します。 サービス コレクションが構築されると、IServiceProvider
インスタンスに変換され、サービスを解決できるようになります。
サービスプロバイダーの注入
サービスを解決する 1 つの方法は、IServiceProvider
インスタンスを Startup
クラスのコンストラクターに挿入することです。 ただし、この方法では、ホスティング層によって注入された限られた必要なサービスへのアクセスのみが提供されます。
ApplicationServices の使用
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 中国語 Web サイトの他の関連記事を参照してください。