我正在使用 .NETXmlSerializer
类将 XML 字符串写入 StringWriter(不是 WCF 或 JSON 或其他任何涉及服务的东西)。
经过数小时试图找出为什么我There was an error generating the XML document
在调用后出现异常后XmlSerializer.Serialize()
,我终于发现它涉及循环引用。我的课程如下所示:
class Table
{
public List<Columns> Columns {get; set;}
}
class Column
{
public Table Table {get; set;}
}
如您所见,一个表有一个列集合,但该集合中的每一列也包含对其父表的引用。
我不想在序列化过程中忽略该属性。我希望能够反序列化它而不必重建引用。当我使用 WCF 时,有一种方法可以通过网络保留引用以减小 XML 的大小。当然,.NET 提供了一些类似的方法来将循环关系序列化为 XML,而不会损害 XML 本身的完整性。