IServiceProvider.GetRequiredService()
とIServiceProvider.GetService()
の違いは何ですか?
いつGetRequiredService()
を使用するほうが良いでしょうか?
可能な限りコンストラクター注入を使用する必要があるため、これらのメソッドを呼び出す必要はほとんどありません。
工場などのまれなケースや、コマンドハンドラーを動的にインスタンス化する場合は、自分で解決できます。
そうは言っても、必須サービスの場合はGetRequiredService
を使用する必要があります。サービスが登録されていない場合、例外をスローします。
反対側のGetService
は、オプション依存関係用です。依存関係は、そのようなサービスが登録されていない場合にnull
を返すだけです。
違いは、サービスが見つからない場合、GetService<T>()
がnull
を返すことです。 GetRequiredService<T>()
は代わりにInvalidOperationException
をスローします。