Вложенные параметризованные типы с новым экземпляром Dart 1.22.0 для связанных правил
У меня есть проблема, связанная с новым правилом экземпляра для привязки в Dart 1.22.0. у меня есть BaseModel
класс, который принимает параметризованный тип ParentType
что само расширяется BaseModel
,
Не все BaseModel имеют определенный ParentType, и если я создаю экземпляр BaseModel как ParentType, то я получаю бесконечное нарушение правил.
Вот пример:
abstract class BaseModel<ParentType extends BaseModel> {
ParentType parentModel
}
class ParentModel extends BaseModel<BaseModel<...>> {}
class ChildModel extends BaseModel<ParentModel> {}
Сейчас я буду игнорировать правило, так как эта проблема, похоже, никак не влияет на развитие.
2 ответа
Немного зависит от того, чего вы хотите достичь, но при условии, что вы хотите ParentModel
быть пригодным для использования в качестве любого вида BaseModel
(где parentModel
поле всегда будет null
), то это может быть тем, что вы хотите:
abstract class BaseModel<ParentType extends BaseModel<ParentType>> {
ParentType parentModel;
}
class ParentModel extends BaseModel<Null> {}
class ChildModel extends BaseModel<ParentModel> {}
Если нет, мне нужно больше узнать о том, каковы ограничения и цели вашей проблемы.
Это может делать то, что вы хотите:
abstract class BaseModel<ParentType extends BaseModel<Null>>