Quelles sont les différences entre IServiceProvider.GetRequiredService()
et IServiceProvider.GetService()
?
Quand est-il préférable d'utiliser GetRequiredService()
?
Vous devriez rarement avoir à faire appel à ces méthodes, car vous devriez utiliser une injection par constructeur chaque fois que possible.
Dans de rares cas, tels que des usines ou pour instancier de manière dynamique des gestionnaires de commandes, vous pouvez le résoudre vous-même.
Cela étant dit, vous devriez utiliser GetRequiredService
où vous devez le service. Il lève une exception lorsque le service n'est pas enregistré.
GetService
de l'autre côté est pour facultatif dépendances, qui retournera simplement null
quand aucun service de ce type n'est enregistré.
La différence est que GetService<T>()
renvoie null
s'il ne peut pas trouver le service. GetRequiredService<T>()
lance un InvalidOperationException
à la place.