Ninject Multi-Injection не так жадный, как я бы подумал! Как прийти?

Если у меня есть класс с CTOR, настроен для многокровного введения, как это:

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

и привязки, настроенные, как это:

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

, я бы ожидал Shogun будет построен с обоими оружием? Но это не так - это только кинжал.

Если я добавлю дальнейшую привязку, как это:

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

, то Shogun получает кинжал и шурикен. EnnectedInto () Похоже, что он должен быть ограничен только связыванием, который он применяется и не влияет на другие привязки. Я нахожу это поведение очень вводящим в заблуждение.

Может кто-то объяснить, что здесь происходит?

11
задан James World 5 September 2011 в 08:14
поделиться