数据合同序列化错误
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序列化,并且不精通。但它有效!
让我走上正轨的是旧的智能感知。
这是创建后的变量,它包含异常。
同样谢谢你
这是后续 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序列化,并且不精通。但它有效! 让我走上正轨的是旧的智能感知。 这是创建后的变量,它包含异常。 同样谢谢你