【发布时间】:2011-06-07 14:49:12
【问题描述】:
我是 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 获得了一个嵌套容器,并使用 Inject 方法注入了一个实例。 ICar 的实例之一应该在其构造函数中接收注入的类型。但是它不起作用,我将其追踪到不使用我的嵌套容器的 ObjectFactory.GetAllInstances() 调用。
我怎样才能让它工作?
我还阅读了有关 StructureMap 自动装配数组和 IEnumerable 实例的信息,但我无法让它工作。
是否有更好的方法来重写上述注册表代码,以便创建IEnumerable<ICar> 的实例并使用我嵌套容器中的注入类型?
【问题讨论】:
-
在某些地方您使用
TCar,而在其他地方您使用ICar。它们的关系是什么(StructureMap 是否知道它们的关系)? -
对不起,它们是同一个东西.. 错字。
标签: .net dependency-injection structuremap ioc-container