1. ホーム
  2. c#

[解決済み] .NET CoreでIServiceProviderのインスタンスを取得する方法は?

2023-05-22 20:01:19

質問

IServiceProvider は、単一のメソッドを持つインターフェースです。

object GetService(Type serviceType);

.NET CoreのネイティブDIコンテナに登録された型のインスタンスを生成するために使用します。

のインスタンスは IServiceProvider を呼び出すことで、それ自身を得ることができます。 BuildServiceProvider メソッドを呼び出すことで得られます。 IServiceCollection . IServiceCollection のパラメータです。 ConfigureServices メソッドの中で Startup メソッドを呼び出します。のインスタンスで魔法のように呼び出されるようです。 IServiceCollection のインスタンスが魔法のように呼び出されるようです。

のインスタンスを作りたいのですが IServiceProvider を持たずに Setup メソッドを全く使わずに 私は統合テストアセンブリの依存性を解決するためにそれが必要です。このシナリオでそれを取得することはまったく可能ですか?

どのように解決されますか?

これは、デフォルトの実装である IServiceCollection を Microsoft が実装したものです。 https://github.com/aspnet/DependencyInjection/blob/master/src/DI/ServiceCollection.cs

コードを見ると、次に IServiceCollection を呼び出すだけでよい。

var serviceCollection = new Microsoft.Extensions.DependencyInjection.ServiceCollection();

お役に立てれば幸いです :)