AspNet Core DI: TryAdd vs Verwendung hinzufügen

8

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?

    
smg 19.01.2017, 13:37
quelle

1 Antwort

13

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.

    
Joe Audette 19.01.2017, 13:58
quelle

Tags und Links