11

如果我有一个为多注入设置的 ctor 类,如下所示:

public Shogun(IEnumerable<IWeapon> allWeapons)
{
    this.allWeapons = allWeapons;
}

绑定设置如下:

Bind<IWeapon>().To<Sword>();
Bind<IWeapon>().To<Dagger>().WhenInjectedInto<Shogun>();

那么我会期望幕府将军在建造时注入两种武器?但事实并非如此——它只会得到匕首。

如果我像这样添加进一步的绑定:

Bind<IWeapon>().To<Sword>();
Bind<IWeapon>().To<Dagger>().WhenInjectedInto<Shogun>();
Bind<IWeapon>().To<Shuriken>().WhenInjectedInto<Shogun>();

然后幕府将军得到匕首和手里剑。WhenInjectedInto<T>()看起来它应该只限制它所应用的绑定而不影响其他绑定。我发现这种行为非常具有误导性。

有人可以解释这里发生了什么吗?

4

1 回答 1

13

这是一个错误 -如果条件绑定和无条件绑定混合在一起,GetAll 将不会返回所有实例

它已在版本2.4.0.0中修复

于 2011-09-04T22:21:29.267 回答