Quelles sont les différences entre IServiceProvider.GetRequiredService()
et IServiceProvider.GetService()
?
Quand est-il préférable d’utiliser GetRequiredService()
?
Vous devriez rarement avoir à appeler ces méthodes du tout, car vous devriez utiliser l’injection de constructeur autant que possible.
Dans de rares cas, tels que des usines ou pour instancier dynamicment des gestionnaires de commandes, vous pouvez le résoudre vous-même.
Cela étant dit, vous devez utiliser GetRequiredService
où vous avez besoin du service. Il lancera une exception lorsque le service n’est pas enregistré.
GetService
de l’autre côté est pour les dépendances facultatives , qui GetService
simplement null
quand aucun service de ce type n’est enregistré.
La différence est que GetService
renvoie la valeur null
s’il ne trouve pas le service. GetRequiredService
lève plutôt une InvalidOperationException
.