ホームページ > バックエンド開発 > C++ > ConfigureServices 内で ASP.NET Core DI インスタンスを解決するにはどうすればよいですか?

ConfigureServices 内で ASP.NET Core DI インスタンスを解決するにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-17 08:37:07
オリジナル
220 人が閲覧しました

How Can I Resolve ASP.NET Core DI Instances within ConfigureServices?

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 メソッドで依存関係を手動で解決します

メソッドの Configure は、IApplicationBuilder への直接アクセスを提供します。 IServiceProvider

<code class="language-csharp">public void Configure(IApplicationBuilder app)
{
    var serviceProvider = app.ApplicationServices;
    var hostingEnv = serviceProvider.GetService<IWebHostEnvironment>();
}</code>
ログイン後にコピー
ConfigureServices の依存関係を解決する

で依存関係を直接解決するには、中間サービス プロバイダーを使用する必要があります: 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 中国語 Web サイトの他の関連記事を参照してください。

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