Ninject Multi-инъекция не так жадный, как я бы подумал!Как так? - PullRequest
11 голосов
/ 04 сентября 2011

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

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

1 Ответ

13 голосов
/ 05 сентября 2011
...