Sur IServiceProvider, quelles sont les différences entre les méthodes GetRequiredService et GetService?

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 .