Was sind die Unterschiede zwischen IServiceProvider.GetRequiredService()
und IServiceProvider.GetService()
?
Wann ist es eine bessere Idee, GetRequiredService()
zu verwenden?
Sie sollten diese Methoden selten aufrufen müssen, da Sie, wo immer möglich, Konstruktorinjektion verwenden sollten.
In seltenen Fällen, z. B. in Fabriken oder zum dynamischen Instanziieren von Befehlshandlern, können Sie dies selbst beheben.
Davon abgesehen sollten Sie GetRequiredService
verwenden, wo Sie erfordern den Dienst. Es wird eine Ausnahme ausgelöst, wenn der Dienst nicht registriert ist.
GetService
auf der anderen Seite steht für optional Abhängigkeiten, die nur null
zurückgeben, wenn kein solcher Dienst registriert ist.
Der Unterschied besteht darin, dass GetService<T>()
null
zurückgibt, wenn der Dienst nicht gefunden werden kann. GetRequiredService<T>()
wirft stattdessen ein InvalidOperationException
.