C#:具有循环链接的节点的xml序列化
我有这样一个类节点:C#:具有循环链接的节点的xml序列化,c#,xml,serialization,hyperlink,cyclic,C#,Xml,Serialization,Hyperlink,Cyclic,我有这样一个类节点: class Node { IEnumerable<Node> inputs; } 类节点{ i可数输入; } 它基本上定义了一个简单的图形。 我想将我的图形序列化为一种人类可读的形式,所以通常我会说xml将是一种方式。 但XML并没有考虑到循环依赖关系:) 那么,对我的图形进行序列化的最佳方式是什么呢 我可以想出几个办法: 抛弃XML,创建我自己的格式 使用XML,用唯一ID标记每个节点,将连接列表与节点分开存储,并在加载后解析 但我认为其他人以
class Node {
IEnumerable<Node> inputs;
}
类节点{
i可数输入;
}
它基本上定义了一个简单的图形。
我想将我的图形序列化为一种人类可读的形式,所以通常我会说xml将是一种方式。
但XML并没有考虑到循环依赖关系:)
那么,对我的图形进行序列化的最佳方式是什么呢
我可以想出几个办法:
- 抛弃XML,创建我自己的格式
- 使用XML,用唯一ID标记每个节点,将连接列表与节点分开存储,并在加载后解析
有人知道可靠的方法吗?对于xml,我会使用id方法(将DTO模型更改为非循环)
注意,可以通过为重载构造函数中的
preserveObjectReferences
选项传入true
来自动支持循环对象图;它不会像XmlSerializer输出那样简单,但仍然可读。如果切换到WCF DataContractSerializer,可以保留对象引用(在3.5 SP 1及更高版本中)
索米写得很好
[DataContract(IsReference=true)]