在StructureMap中为构造函数注入注册相同查找类型的多个映射

hco*_*bda 2 structuremap

所以我想要注册特定查找类型的n个映射.IE:

x.For<IWidget>().Add<SquareWidget>();
x.For<IWidget>().Add<YellowWidget>();
Run Code Online (Sandbox Code Playgroud)

我想让SM将一个枚举(或数组)注入到类的构造函数中:

public class Machine
{
    public Machine(IEnumerable<IWidget> widgets) { ... }
}

ObjectFactory.GetInstance<Factory>()
Run Code Online (Sandbox Code Playgroud)

我没有办法做到这一点,但我可能会遗漏一些东西.

TIA,

PS:请不要回答"你为什么这样做"或其他不相关的评论.我意识到这可以通过其他方法来实现.如果这种特殊方法可行,我真的很好奇.:)

Jos*_*gan 7

使用更新版本的StructureMap(识别IEnumerable),它应该与您在问题中的确切方式相同.只需使用For().Add()注册多个具体类型,然后将接口类型的IEnumerable作为构造函数参数.StructureMap将自动注入所有已注册的具体类型.无需使用像TheArrayOf这样的特定注册码...