数据合同序列化错误

Datacontract serialization error

这是后续 How to set [DataMember] on all class members

所以我必须用字典和其他成员序列化一个class。

我选择了 se

的数据上下文序列化
public SimpleDataGridSample()
    {
      if (false)
      {

        MyClass theclass = new MyClass();

        var serializer = new DataContractSerializer(typeof(MyClass));

        using (Stream fileStream = File.Open("aaa.bin", FileMode.Create))
        {
          XmlDictionaryWriter binaryDictionaryWriter = XmlDictionaryWriter.CreateBinaryWriter(fileStream);
          serializer.WriteObject(binaryDictionaryWriter, theclass);
          binaryDictionaryWriter.Flush();
        }
      }
      else
      {
        MyClass theclass;
        var serializer = new DataContractSerializer(typeof(MyClass));

        using (Stream fileStream = File.Open("aaa.bin", FileMode.Open))
        {
          XmlDictionaryReaderQuotas xq = new XmlDictionaryReaderQuotas();
          XmlDictionaryReader binaryDictionarReader = XmlDictionaryReader.CreateBinaryReader(fileStream, xq);
          theclass = (MyClass)serializer.ReadObject(binaryDictionarReader);

        }
      }

    }
  }

这奏效了。

但这只是一个测试程序。 当应用到我的更复杂的 class 时,我得到这个错误:

{"Index was out of range. Must be non-negative and less than the size of the collection.\r\nParameter name: index"}

无法理解索引在说什么。

主要 class 由几个成员(还有字典和可观察列表)和其他子 class 组成。 每个 class 都标记为 [DataContract(IsReference = true)] 每个成员都被标记为 [DataContext]

谢谢

好的,其他用户不可能回答。起初我不明白问题出在哪里,因为我以前从未使用过used DataContract序列化,并且不精通。但它有效! 让我走上正轨的是旧的智能感知。 这是创建后的变量,它包含异常。 同样谢谢你