dependency injection - net - En IServiceProvider, ¿cuáles son las diferencias entre los métodos GetRequiredService y GetService?
mvc dependency injection (2)
¿Cuáles son las diferencias entre
IServiceProvider.GetRequiredService()
e
IServiceProvider.GetService()
?
¿Cuándo es una mejor idea usar
GetRequiredService()
?
La diferencia es que
GetService<T>()
devuelve
null
si no puede encontrar el servicio.
GetRequiredService<T>()
arroja una
InvalidOperationException
en
InvalidOperationException
lugar.
Rara vez debería llamar a estos métodos, ya que debería usar la inyección del constructor siempre que sea posible.
En casos excepcionales, como fábricas o para crear instancias dinámicas de controladores de comandos, puede resolverlo usted mismo.
Dicho esto, debe usar
GetRequiredService
donde
requiera
el servicio.
Lanzará una excepción, cuando el servicio no esté registrado.
GetService
en el otro lado es para dependencias
opcionales
, que simplemente devolverán
null
cuando no haya dicho servicio registrado.