Soy nuevo en StructureMap y tengo algún código con el que estoy trabajando que utilice StructureMap 2.5.4.StructureMap e inyección IEnumerable <T>
Hay una clase que se construye utilizando StructureMap que tiene un constructor que toma IEnumerable<ICar>
como parámetro.
El registro tiene el siguiente código.
Scan(x =>
{
x.TheCallingAssembly();
x.WithDefaultConventions();
x.AddAllTypesOf<ICar>();
}
);
ForRequestedType<IEnumerable<ICar>>().TheDefault.Is.ConstructedBy(
x => ObjectFactory.GetAllInstances<ICar>());
Estoy escribiendo una unidad de prueba y han obtenido un contenedor anidado de la ObjectFactory y se ha inyectado una instancia utilizando el método Inject. Una de las instancias de ICar debe recibir el tipo inyectado en su constructor. Sin embargo, no funcionaba y rastreé eso hasta la llamada a ObjectFactory.GetAllInstances() que no usa mi contenedor anidado.
¿Cómo puedo hacer que funcione?
También leí sobre las matrices de autoenlace de StructureMap y las instancias de IEnumerable, pero no pude hacerlo funcionar.
¿Existe alguna forma mejor de reescribir el código de registro anterior para que se cree una instancia de IEnumerable<ICar>
y use el tipo inyectado de mi contenedor anidado?
En algunos lugares usa 'TCar' y otros usa' ICar'. ¿Cuál es su relación (y StructureMap sabe acerca de su relación)? –
Lo siento, son lo mismo .. typo. – GiddyUpHorsey