需要.net序列化的想法
本文关键字:序列化 net 需要 | 更新日期: 2023-09-27 17:50:17
public class Page
{
public List<Point> Points;
public List<Line> Lines;
}
public class Point
{
public double X, Y;
public Page Parent;
}
public class Line
{
public Point StartPoint;
public Point EndPoint;
public Page Parent;
}
在初始化Line对象时,它将检查起始点和端点是否在Line的父节点。我需要一个想法,可以序列化和反序列化一个页面(或保存和检索它从文件)对象完全,但它会导致循环引用…给我一些做这件事的主意吧……谢谢…
如果你使用XML序列化,你可以用XmlIgnore
标记那些会导致循环引用的属性,这样它们就不会被序列化,从而避免了以下问题:
public class Point
{
public double X, Y;
[XmlIgnore]
public Page Parent;
}
public class Line
{
public Point StartPoint;
public Point EndPoint;
[XmlIgnore]
public Page Parent;
}
如果你真的需要你自己的序列化,你可以有一个类似的属性——但是我不建议你重新发明轮子——只要使用已经内置的属性就可以了。
作为旁注,你应该在你的类中使用属性而不是公共字段。
如果您想要序列化完整的图形,DataContractSerializer可以做到这一点,但只有在构造函数中启用preserveObjectReferences
选项时才可以。就我个人而言,我只会序列化向下的关系,并且只固定父导航。
使用Json。. NET是一个很好的库,有很好的配置选项,可以处理许多边缘情况,比如这个。
http://james.newtonking.com/projects/json/help/