autofacのドキュメントには次のように記載されています。
Autofac が型のコンストラクター パラメーターを注入している場合、
IEnumerable<ITask>
それは を提供するコンポーネントを探しませんIEnumerable<ITask>
。代わりに、コンテナは ITask のすべての実装を見つけて、それらすべてを注入します。
しかし、実際には、登録された型ごとに、登録された回数だけ追加されます。したがって、次のようにクラスを 2 回登録すると、次のようになります。
builder.RegisterType<A>();
builder.RegisterType<A>();
次に、列挙で2つのアイテムを取得します!! 単一のモジュール内では、型を 1 回だけ登録するように気を付けていることは明らかなので、問題はありません。しかし、複数のモジュールによって登録された共有モジュールがある場合 (典型的なひし形モジュールの依存関係図)、共有モジュールが他の人によって登録されているのと同じ数のアイテムが列挙内に取得されます...
バグですか?ドキュメントに記載されているように、実装ごとに単一のアイテムを提供するように列挙を強制する方法はありますか?