IServiceProvider.GetRequiredService()
和IServiceProvider.GetService()
有什么区别?
什么时候使用GetRequiredService()
更好?
你应该很少调用这些方法,因为你应该尽可能使用构造函数注入。
在极少数情况下,例如工厂或动态实例化命令处理程序,您可以自己解决它。
话虽这么说,你应该在需要服务的地方使用GetRequiredService
。当服务未注册时,它将抛出异常。
另一方面,GetService
是可选的依赖项,当没有注册此类服务时,它将返回null
。
不同的是,如果找不到服务,GetService<T>()
会返回null
。 GetRequiredService<T>()
反而投掷了InvalidOperationException
。