2

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

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

public List<UMLArrow> arrowlist;

每个箭头都有一个起始类和一个结束类:

public UMLClass startingClass;
public UMLClass endClass;

我想当我尝试序列化它时,由于这个问题,我进入了一个无限循环:

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

有谁知道解决这个问题?

4

2 回答 2

2

我猜你已经实现了自己的序列化方法。实现循环依赖的序列化需要做的是为每个对象的表示添加一个 id 并跟踪序列化的对象。当你序列化一个对象时,你会检查它是否已经序列化。如果是,则只需序列化对该对象的引用及其 id。

于 2012-11-24T22:30:37.443 回答
2

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

于 2012-11-24T22:54:35.620 回答