IServiceProvider.GetRequiredService()
和IServiceProvider.GetService()
之间有什么区别?
何时使用GetRequiredService()
更好?
答案 0 :(得分:72)
你应该很少调用这些方法,因为你应该尽可能使用构造函数注入。
在极少数情况下,例如工厂或动态实例化命令处理程序,您可以自行解决。
话虽如此,您应该在要求服务的地方使用GetRequiredService
。当服务未注册时,它将抛出异常。
GetService
用于可选依赖项,当没有注册此类服务时,它将返回null
。
答案 1 :(得分:35)
不同之处在于GetService<T>()
如果无法找到服务,则会返回null
。 GetRequiredService<T>()
会引发InvalidOperationException
。