StructureMap и внедрение IEnumerable

Я новичок в StructureMap, и у меня есть код, с которым я работаю, который использует StructureMap 2.5.4.

Есть класс, созданный с использованием StructureMap, у которого есть конструктор, который принимает IEnumerable в качестве параметра.

В реестре есть следующий код.

Scan(x =>
{
   x.TheCallingAssembly();
   x.WithDefaultConventions();
   x.AddAllTypesOf<ICar>();
   }
);

ForRequestedType<IEnumerable<ICar>>().TheDefault.Is.ConstructedBy(
            x => ObjectFactory.GetAllInstances<ICar>());

Я пишу модульный тест и получил вложенный контейнер вне ObjectFactory и внедрил экземпляр с помощью метода Inject. Один из экземпляров ICar должен получить введенный тип в свой конструктор. Однако это не сработало, и я отследил это до вызова ObjectFactory.GetAllInstances (), который не использует мой вложенный контейнер.

Как я могу заставить это работать?

Я также читал о массивах автосоединения StructureMap и IEnumerable, но мне не удалось заставить его работать.

Есть ли лучший способ переписать приведенный выше код реестра так, чтобы был создан экземпляр IEnumerable и использовал введенный тип из мой вложенный контейнер?

7
задан GiddyUpHorsey 12 January 2011 в 20:59
поделиться