ServiceProviderオブジェクトのGetService<T>(), GetRequiredService<T>() メソッドの違いを紹介します。
ServiceProviderオブジェクトからインスタンスを生成するメソッドとして以下のメソッドが用意されています。
基本的には指定したオブジェクトタイプのインスタンスを作成しますが、挙動やパラメーターの与え方が微妙に違います。
GetServiceメソッドは第一引数に与えたタイプのインスタンスオブジェクトを作成します。タイプを与えるため、typeof 演算子を利用します。
インスタンスが生成できなかった場合は戻り値にnullが返ります。
FormMain form = (FormMain)serviceProvider.GetService(typeof(FormMain));
GetService<T>メソッドはTに与えたタイプのインスタンスオブジェクトを作成します。
インスタンスが生成できなかった場合は戻り値にnullが返ります。
FormMain form = (FormMain)serviceProvider.GetService<FormMain>();
GetRequiredServiceメソッドは第一引数に与えたタイプのインスタンスオブジェクトを作成します。タイプを与えるため、typeof 演算子を利用します。
インスタンスが生成できなかった場合はInvalidOperationException
例外が発生します。
FormMain form = (FormMain)serviceProvider.GetRequiredService(typeof(FormMain));
GetRequiredService<T>メソッドはTに与えたタイプのインスタンスオブジェクトを作成します。
インスタンスが生成できなかった場合はInvalidOperationException
例外が発生します。
FormMain form = (FormMain)serviceProvider.GetRequiredService<FormMain>();
GetServicesメソッドは第一引数に与えたタイプのインスタンスオブジェクトの列挙を作成します。タイプを与えるため、typeof 演算子を利用します。
GetServices<T>メソッドはTに与えたタイプのインスタンスオブジェクトの列挙を作成します。