我尝试使用dataContract序列化程序在C#中序列化大型树数据结构 . 我得到了循环引用异常 . 所以我用[DataContract(IsReference = true)]而不是[DataContract]标记了所需的类 . 现在我得到“索引超出了数组的范围”异常 . 我的代码如下:
public void Serialize(object obj, string file, Type t)
{
using (FileStream stream1 = new FileStream(file, FileMode.Create))
{
stream1.Position = 0;
DataContractSerializer s = new DataContractSerializer(t);
s.WriteObject(stream1, obj);
}
}
以上代码适用于所有其他序列化 . 仅在序列化此树对象的情况下,它不起作用 . 我已经针对所有必需的类标记了[DataContract(IsReference = true)],并针对所有必需的属性标记了[dataMember] . 请帮助
1 回答
我想建议使用
DataContract(IsReference = true)
属性标记所有继承的类 . 但是你已经说过你做到了这一点 . 因此,再次检查您的标记,并确保只标记继承的类 . 如果只标记了继承的类但仍然出现此错误,那么只需使用WCF Tracing
检查项目 .跟踪将显示序列化过程中发生的详细信息 .
您可以在MSDN找到更多详细信息 .