Расширить метод Ninject Bind - PullRequest
       12

Расширить метод Ninject Bind

0 голосов
/ 16 ноября 2018

Ninject имеет этот метод .

public IBindingToSyntax<T1, T2, T3, T4> Bind<T1, T2, T3, T4>()

Возможно ли как-то расширить этот метод для привязки 5 интерфейсов к одной реализации?

Как это:

public IBindingToSyntax<T1, T2, T3, T4, T5> Bind<T1, T2, T3, T4, T5>()

1 Ответ

0 голосов
/ 16 ноября 2018

Ninject предоставляет свободный синтаксис, который позволяет связать до 4 интерфейсов вместе с одним экземпляром:

Bind<IInterface1, IInterface2, IInterface3, IInterface4>().To<Implementation>();

Если нам нужно больше интерфейсов, существует обходной путь:

var bindingConfiguration =
    Bind<IInterface1, IInterface2, IInterface3, IInterface4>()
        .To<Implementation>()
        .BindingConfiguration;
kernel.AddBinding(new Binding(typeof(IInterface5), bindingConfiguration));

Ниже я разместил цитату автора, почему только четыре интерфейса?

Некоторые могут спросить, что если я хочу привязать более четырех интерфейсов к одной и той же службе.В небольшом обсуждении мы пришли к выводу, что если у вас более четырех интерфейсов в одной службе, то, скорее всего, у вас есть проблема с принципом единой ответственности, и вы должны это исправить в первую очередь.

Ссылка на статью Новые возможности и изменения Ninject 3.0

...