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