我正在使用 IXmlSerializable 将特定类型的元素写入传出 xml。我已经实现了架构,并且正在写出这些项目。下面的代码是一个示例。
public void IXmlSerializable.WriteXml(XmlWriter writer) {
// Write Out Class.
foreach (var item in myItems) {
DataContractSerializer ds = new DataContractSerializer(typeof(MyType));
ds.WriteObject(writer, item);
}
}
我遇到的问题是 MyType 被声明为使用引用
[DataContract(IsReference = true)]
public class MyType { ...
因此,当项目已经写入 xml 时,它需要成为一个引用。
我如何知道是否已将引用写入 xml?我认为我必须忽略我明确无法控制的引用。这样,我将组成自己的参考 ID 并参考我自己的实例。
这显然是一个糟糕的妥协,因为我正在复制不应复制的引用。
有没有办法找出已经写的内容,看看我是否可以找到已经序列化的项目的 id?
问候
克雷格。