我目前正在首次使用C#进行序列化,并且正在使用XmlSerializer类,但是遇到了一个问题。我有两个互相引用的类,这在序列化时导致错误。

该项目是用于类图绘制的程序。每个类都有指向或指向它的箭头的列表:

public List<UMLArrow> arrowlist;


每个箭头都有起点和终点:

public UMLClass startingClass;
public UMLClass endClass;


我发现当我尝试对此序列化时,由于这个问题,我陷入了无限循环:

<UMLClass>
    <List<UMLArrow> >
        <UMLClass>
            <List<UMLArrow> >
                ...
            <List<UMLArrow> >
        </UMLClass>
    </List<UMLArrow>>
<UMLClass>


有人知道解决方案吗?

最佳答案

XmlSerializer不支持循环引用。您需要使用一个串行器。 DataContractSerializer(如果使用preserveObjectReferences = true初始化)或NetDataContractSerializer确实支持它,因此您应该考虑更改所使用的序列化程序。

关于c# - 序列化彼此引用的两个对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13546252/

10-10 03:52