Я новичок в 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
и использовал введенный тип из мой вложенный контейнер?