【发布时间】:2014-09-22 06:23:58
【问题描述】:
我尝试使用 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]。请帮助
【问题讨论】:
-
文件参数值是多少?这个参数是文件路径还是文件内容?
-
为什么要使用 FileMode.Create?有必要吗?
-
参数为:obj为要序列化的内容,file为路径,t为typeof(obj)
-
FileMode.Create() 需要序列化并保留创建文件中的内容
-
你的文件已经存在了吗?
标签: c# wcf datacontractserializer