Я новичок в StructureMap и у меня есть некоторый существующий код, с которым я работаю и который использует StructureMap 2.5.4.
Существует класс, созданный с использованием StructureMap, у которого есть конструктор, который принимает IEnumerable<ICar>
в качестве параметра.
В реестре есть следующий код.
Scan(x =>
{
x.TheCallingAssembly();
x.WithDefaultConventions();
x.AddAllTypesOf<ICar>();
}
);
ForRequestedType<IEnumerable<ICar>>().TheDefault.Is.ConstructedBy(
x => ObjectFactory.GetAllInstances<ICar>());
Я пишу модульный тест, получил вложенный контейнер из ObjectFactory и внедрил экземпляр, используяВнедрить метод.Один из экземпляров ICar должен получить внедренный тип в своем конструкторе.Однако это не сработало, и я отследил это до вызова ObjectFactory.GetAllInstances (), который не использует мой вложенный контейнер.
Как мне заставить это работать?
Я такжепрочитайте о массивах автопроводки StructureMap и экземплярах IEnumerable, но я не смог заставить его работать.
Есть ли лучший способ переписать приведенный выше код реестра, чтобы был создан экземпляр IEnumerable<ICar>
и использовать введенныйтипа из моего вложенного контейнера?