То, что вы пытаетесь достичь, невозможно с помощью дженериков.Во-первых, вы должны иметь возможность выразить, что ваш общий параметр V
является протоколом или неконечным классом.Это невозможно.Но это ограничение необходимо, чтобы ограничение M: V
имело какой-либо смысл.
Возможно, вам больше повезет, если вы будете моделировать свою проблему с использованием протоколов со связанными типами, например:
protocol FillerProtocol {
associatedtype ResultModel
}
class ListController<RequestModel, Filler: FillerProtocol, Cell>: BaseViewController
where
Cell: BaseCell<Filler>,
RequestModel: ExtendableByBaseListRequestModel
{
}
то есть вам даже не нужно указывать тип ResultModel
, он определяется вашим FillerProtocol
.