我目前正在尝试对我的应用程序的类模型进行序列化和反序列化,但是我找不到一种很好的方法。
问题是某些组件的成员变量具有抽象类型(模型的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
}