需要.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的父节点。我需要一个想法,可以序列化和反序列化一个页面(或保存和检索它从文件)对象完全,但它会导致循环引用…给我一些做这件事的主意吧……谢谢…

需要.net序列化的想法

如果你使用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/