Я хотел бы «любой интерфейс, который наследует один или несколько интерфейсов из этого списка интерфейсов» конкретному провайдеру, использующему ninject 2. Будет ли реализована реализация IBindingResolver здесь?Как настроить привязки в ninject
ответ
нет - используйте ninject.extensions.conventions вместо
kernel.Bind(
x => x.FromThisAssembly()
.SelectTypesInheritedFrom<IMyInterface>()
.BindToAllInterfaces()
.Configure((c, s) => c.InSingletonScope()));
Хотя это лучший ответ на вопрос, я не уверен, что он будет работать для меня. На данный момент я рассматриваю OpenGenericBindingResolver. – JeffreyABecker
У меня есть 3 сборки: Domain определяет интерфейсы, Data определяет реализации, Web потребляет. Say Domain определяет IFoo и IBar. Контроллер в Сети, который потребляет оба, определит IFooBar и потребляет это. В идеале, что я хотел бы сделать, это обнаружить эти агрегированные интерфейсы и вернуть прокси-сервер перехвата, который делегирует вызовы для отдельных реализаций. Я не вижу, как это сделать с соглашением о продлениях. – JeffreyABecker
@JeffreyABecker Вам нужно будет написать собственный IBindingGenerator для привязки интерфейсов к вашему прокси в этом случае. Но вы действительно хотите, чтобы такая уродливая штука? Зачем? Почему бы вам просто не вводить IFoo и IBar отдельно в контроллер? Это всего лишь обходной путь для сокращения числа зависимостей? В этом случае разрешите фактическую проблему, которая, скорее всего, не будет следовать за SRP. –
Таким образом, вы хотели бы, чтобы связать все реализации интерфейса I в приложении к интерфейсу? –