Сериализация сложных иерархий классов - PullRequest
0 голосов
/ 01 июля 2019

В настоящее время я пытаюсь сериализовать и десериализовать модель класса моего приложения, но я не могу найти хороший способ сделать это.

Проблема состоит в том, что некоторые компоненты имеют переменные-члены с абстрактным типом (* * * * * У модели root есть абстрактный тип Super). При десериализации этого я не могу знать, относится ли root к типу ConcreteA или ConcreteB. Как мне решить эту проблему красиво?

class Model {
  Super root;

  Model({this.root});
}

abstract class Super {
  int superProp;

  Super({this.superProp});
}

class ConcreteA extends Super {
  int aConcrete;

  ConcreteA({this.aConcrete, int superProp}) : super(superProp: superProp);
}

class ConcreteB extends Super {
  ConcreteB({int superProp}) : super(superProp: superProp);
}

void main() {
  var modelA = Model(root: ConcreteA(aConcrete: 1, superProp: 2));
  // somehow serialize and deserialize without code repetition in fromJSON
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...