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