Serialization Dart序列化错误:引用无效

Serialization Dart序列化错误:引用无效,serialization,dart,Serialization,Dart,在我的班级里,我有一个包裹。在MySerialization的解释中,我添加了一系列规则。使用者类具有包装器MySerialization类的单独实例以(反)序列化对象 此设置在使用者类中使用单独的MySerialization实例,在引用类构造函数中引发错误: Reference(this.parent, this.ruleNumber, this.objectNumber) { if (ruleNumber == null || objectNumber == null) { t

在我的班级里,我有一个包裹。在MySerialization的解释中,我添加了一系列规则。使用者类具有包装器MySerialization类的单独实例以(反)序列化对象

此设置在使用者类中使用单独的MySerialization实例,在引用类构造函数中引发错误:

Reference(this.parent, this.ruleNumber, this.objectNumber) {
  if (ruleNumber == null || objectNumber == null) {
    throw new SerializationException("Invalid Reference");
  }
  if (parent.rules.length < ruleNumber) {
    throw new SerializationException("Invalid Reference");  // <---- here
  }
}
这意味着找不到被引用的规则。然而,starnge的事情是,我通过MySerialization包装器在所有序列化实例中应用了相同的规则

我尝试只使用一个MySerialization实例进行序列化。这不会产生错误。当我在DartEditor中调试时,我会在调试器窗口中获得
消息

我已经定义了CustomRule子类规则。当我启用/禁用这些CustomRules时,行为不会改变

无效引用的原因是什么,以及如何解决和解决此错误

Dart Editor version 1.5.3.release (STABLE)
Dart SDK version 1.5.3

如果没有更多关于设置的细节,很难回答。但是,我猜您使用的是默认设置,在该设置中,当遇到它不知道的类时,它将自动生成BasicRule的实例,这些实例将添加到规则列表中。你的另一个实例不知道这些,所以它失败了

在原始序列化中的规则列表写出对象后,可以尝试检查(或仅打印)该列表,并查看是否存在这种情况

要解决此问题,您需要为正在序列化且不在原始列表中的其他对象编写规则。或者您可以使用“selfdescription”选项,在这种情况下,它将发送与原始文件一起使用的规则。但是,如果您有无法序列化的硬编码自定义规则,那么这将不起作用

Dart Editor version 1.5.3.release (STABLE)
Dart SDK version 1.5.3