2012-01-13 3 views
1

Я хотел бы «любой интерфейс, который наследует один или несколько интерфейсов из этого списка интерфейсов» конкретному провайдеру, использующему ninject 2. Будет ли реализована реализация IBindingResolver здесь?Как настроить привязки в ninject

+0

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

ответ

1

нет - используйте ninject.extensions.conventions вместо

kernel.Bind(
    x => x.FromThisAssembly() 
      .SelectTypesInheritedFrom<IMyInterface>() 
      .BindToAllInterfaces() 
      .Configure((c, s) => c.InSingletonScope())); 
+0

Хотя это лучший ответ на вопрос, я не уверен, что он будет работать для меня. На данный момент я рассматриваю OpenGenericBindingResolver. – JeffreyABecker

+0

У меня есть 3 сборки: Domain определяет интерфейсы, Data определяет реализации, Web потребляет. Say Domain определяет IFoo и IBar. Контроллер в Сети, который потребляет оба, определит IFooBar и потребляет это. В идеале, что я хотел бы сделать, это обнаружить эти агрегированные интерфейсы и вернуть прокси-сервер перехвата, который делегирует вызовы для отдельных реализаций. Я не вижу, как это сделать с соглашением о продлениях. – JeffreyABecker

+0

@JeffreyABecker Вам нужно будет написать собственный IBindingGenerator для привязки интерфейсов к вашему прокси в этом случае. Но вы действительно хотите, чтобы такая уродливая штука? Зачем? Почему бы вам просто не вводить IFoo и IBar отдельно в контроллер? Это всего лишь обходной путь для сокращения числа зависимостей? В этом случае разрешите фактическую проблему, которая, скорее всего, не будет следовать за SRP. –