ホームページ > バックエンド開発 > C++ > 「ConfigureServices」で ASP.NET Core サービスを手動で解決するにはどうすればよいですか?

「ConfigureServices」で ASP.NET Core サービスを手動で解決するにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-17 08:41:09
オリジナル
999 人が閲覧しました

How Can I Manually Resolve ASP.NET Core Services in `ConfigureServices`?

ConfigureServices

で ASP.NET Core サービスを手動で解決します

ASP.NET Core で依存関係注入コンテナーを構成するために使用される ConfigureServices メソッドは、サービスを解決する直接的な方法を提供しません。 この方法でサービスを手動で解決するには、別のアプローチが必要です。

サービスプロバイダーパターン

サービスを解決するために、ASP.NET Core はサービス プロバイダー パターンを使用します。 サービス コレクションが構築されると、IServiceProvider インスタンスに変換され、サービスを解決できるようになります。

サービスプロバイダーの注入

サービスを解決する 1 つの方法は、IServiceProvider インスタンスを Startup クラスのコンストラクターに挿入することです。 ただし、この方法では、ホスティング層によって注入された限られた必要なサービスへのアクセスのみが提供されます。

ApplicationServices の使用

Configure メソッドでは、IApplicationBuilderApplicationServices 属性を提供します。この属性には、登録されているすべてのサービスにアクセスできるサービス プロバイダーが含まれます。

<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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート