У меня есть общий тип IMyGeneric<T> where T : IBase
.Получить все типы, наследующие общие ограничения в Ninject
Как я могу получить все типы inherit IMyGeneric<T>
в ninject?
Я попытался это:
this.kernel.GetAll<IMyGeneric<IBase>>();
но это не работает, и его возвращение 0 результатов.
я мог бы получить все, что наследующий IBase
, а затем foreach
всех типов и использовать this.kernel.Get(type)
, но тогда я бы IEnumerable<object>
и не IEnumerable<IMyGeneric<IMyInheritedType>>
и не смогли бы бросить и вернуться затем в качестве определенного типа, например, IEnumerable<IMyGeneric<IBase>>
, потому что я получаю ошибку при произведении.
Преобразование '' IMyGeneric к '' IMyGeneric будет работать только тогда, когда интерфейс определяется как тип варианта: '' IMyGeneric , но даже тогда я не думаю, что на самом деле Ninject поддерживает это. Поэтому, даже если вы зарегистрируете список различных типов «IMyGeneric », Ninject, вероятно, не получит эти типы для вас. –
Steven
Любой другой способ получить все реализации на основе ограничений? Или создать IBaseConstraint (только для ограничения), а затем получить все через IBase? Хотя мне не очень нравится эта идея. – zhuber
Возможно, вам захочется показать больше фактической реализации, которую мы вам предоставим, чтобы предоставить вам отзывы о том, как действовать. – Steven