У меня есть класс, который расширяется и принимает обобщенный тип c, который сам принимает тип:
abstract BaseClass<T : BaseT<U : BaseU>>
Конечно, код выше, хотя он показывает структуру переданных генериков недействительно, поэтому я должен написать это так:
abstract BaseClass<T : BaseT<U>, U : BaseU>
Это означает, что я должен выписать оба типа:
class MyClass : BaseClass<MyT, MyU>()
Поскольку MyT
объявляет тип для использования BaseT
, есть ли способ получить тип U
из T
, не будучи настолько многословным? Я хотел бы просто написать BaseClass<MyT>
и заставить его выяснить, что, начиная с class MyT : BaseT<MyU>
, он должен ожидать связанный подтип U
для любого подтипа BaseT
. Я обдумываю это? Правильный ли ответ: «впишите оба дженерика и перестаньте жаловаться»?