2017-01-19 2 views
8

ソースはcommentです。TryAddバージョンはすでにIServiceCollectionに登録されていればサービスを追加しません。しかし、docsはこの方法について言及していません。 いつ使用する必要がありますか?AspNetコアDI:試用追加対使用量を追加

答えて

13

通常、依存関係を持つライブラリがある場合、ライブラリのコンシューマが起動時に呼び出すデフォルトの依存関係を呼び出すように、IServiceCollectionの拡張メソッドを作成します。

.TryAddは、インターフェイスの実装を1つだけ使用する必要がある場合は、拡張メソッド内で便利です。その後、誰かがデフォルトの実装をオーバーライドしたい場合は、の前にを登録し、その実装が最初に登録されているので、TryAddは何も追加しません。

拡張メソッドで.Addを使用する場合でも、の後に実装を登録して、デフォルトの実装を上書きすることができます。しかし、この場合にはまだ複数の実装が登録されているので、IFooのIEnumerableに依存して登録されているすべての実装を得ることができます。しかし、彼らがIFooに依存する場合、デフォルトのもの、つまり最後に追加されたものを取得します。

関連する問題