在IServiceProvider上,GetRequiredService和GetService方法之间有什么区别?

问题描述 投票:51回答:2

IServiceProvider.GetRequiredService()IServiceProvider.GetService()有什么区别?

什么时候使用GetRequiredService()更好?

dependency-injection asp.net-core .net-core
2个回答
72
投票

你应该很少调用这些方法,因为你应该尽可能使用构造函数注入。

在极少数情况下,例如工厂或动态实例化命令处理程序,您可以自己解决它。

话虽这么说,你应该在需要服务的地方使用GetRequiredService。当服务未注册时,它将抛出异常。

另一方面,GetService是可选的依赖项,当没有注册此类服务时,它将返回null


35
投票

不同的是,如果找不到服务,GetService<T>()会返回nullGetRequiredService<T>()反而投掷了InvalidOperationException

© www.soinside.com 2019 - 2024. All rights reserved.