我目前正在首次使用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/