GetRequiredService()
與GetService()
有何區別。GetRequiredService應該使用GetService嗎?
當使用GetRequiredService()
是個好主意嗎?
GetRequiredService()
與GetService()
有何區別。GetRequiredService應該使用GetService嗎?
當使用GetRequiredService()
是個好主意嗎?
您應該很少需要調用這些方法,因爲您應該儘可能使用構造函數注入。
在極少數情況下,例如工廠或動態實例化命令處理程序,您可以自己解決它。
也就是說,你應該使用GetRequiredService
你需要服務。當服務未註冊時,它會拋出異常。
另一邊GetService
是可選的依賴,這將直接返回null
時,有註冊沒有這樣的服務。
區別在於GetService<T>()
返回null
如果找不到服務。 GetRequiredService<T>()
改爲拋出InvalidOperationException
。
您應該注意,如果您使用的是外部DI提供程序,則此語義可能會發生一些變化,例如,在StructureMap中,這兩種函數的行爲都不相同:https://github.com/structuremap/StructureMap.Microsoft.DependencyInjection/issues/37 – rekiem87