Вложенные параметризованные типы с новым экземпляром 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>>
Другие вопросы по тегам