Sources hat einen Kommentar Diese TryAdd
version fügt keinen Service hinzu, wenn sie bereits in IServiceCollection
registriert ist. Aber diese Methode wird in der Dokumentation nicht erwähnt.
Wann sollte es verwendet werden?
Wenn Sie eine Bibliothek mit Abhängigkeiten haben, würden Sie normalerweise eine Erweiterungsmethode von IServiceCollection erstellen, die der Consumer Ihrer Bibliothek beim Start aufruft, um die Standardabhängigkeiten zu verkabeln.
.TryAdd ist in Ihrer Erweiterungsmethode nützlich, wenn nur eine Implementierung einer Schnittstelle verwendet werden soll. Wenn jemand eine Standardimplementierung überschreiben will, kann er sie vor registrieren, indem er Ihre Erweiterungsmethode aufruft und da ihre Implementierung zuerst registriert wird, fügt TryAdd nichts hinzu.
Wenn .Add in Ihrer Erweiterungsmethode verwendet wird, kann die Standardimplementierung weiterhin überschrieben werden, indem die Implementierung nach des Aufrufs Ihrer Erweiterungsmethode registriert wird. Aber in diesem Fall sind noch mehrere Implementierungen registriert, so dass man von IEnumerable von IFoo abhängig sein könnte und alle registrierten Implementierungen erhalten könnte. Aber wenn sie eine Abhängigkeit von IFoo bekommen, bekommen sie nur den Standard, dh den zuletzt hinzugefügten.
Tags und Links asp.net-core .net-core