私はStructureMapが新しく、既存のいくつかの既存のコードがあります。これは、StructureMap 2.5.4を使用しています。StructureMapとIEnumerableのインジェクト<T>
IEnumerable<ICar>
をパラメータとするコンストラクタを持つStructureMapを使用して構築されたクラスがあります。
レジストリには次のコードがあります。
Scan(x =>
{
x.TheCallingAssembly();
x.WithDefaultConventions();
x.AddAllTypesOf<ICar>();
}
);
ForRequestedType<IEnumerable<ICar>>().TheDefault.Is.ConstructedBy(
x => ObjectFactory.GetAllInstances<ICar>());
私は単体テストを作成しており、ObjectFactoryからネストされたコンテナを取得し、Injectメソッドを使用してインスタンスを注入しました。 ICarのインスタンスの1つは、コンストラクタで注入型を受け取る必要があります。しかし、それは動作していませんでしたし、私はそれを私の入れ子のコンテナを使用しないObjectFactory.GetAllInstances()呼び出しまで追跡しました。
これを動作させるにはどうすればよいですか?
また、構造体のautowiring配列とIEnumerableインスタンスについても読んでいますが、動作させることができませんでした。
上記のレジストリコードを書き換えて、IEnumerable<ICar>
のインスタンスを作成し、入れ子になったコンテナの注入されたタイプを使用する方が良いでしょうか?
いくつかの場所では 'TCar'を使用し、他の場所では' ICar'を使用します。それらの関係は何ですか(そして、StructureMapはそれらの関係について知っていますか?) –
申し訳ありませんが、彼らは同じことです..タイプミス。 – GiddyUpHorsey