Подтвердить что ты не робот

Ninject multi-injection не так жадна, как я бы подумал! Как так?

Если у меня есть класс с 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>() выглядит так, что он должен ограничивать привязку, к которой она применяется, и не влиять на другие привязки. Я считаю, что это поведение очень вводит в заблуждение.

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

4b9b3361