Я пишу элементы определенного типа в исходящий xml с помощью IXmlSerializable.
Я реализовал схему и пишу элементы. Код, приведенный ниже, является примером.
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 уже записана?
Я придерживаюсь мнения, что я должен просто игнорировать ссылки, которые я явно не контролирую. Таким образом, я буду создавать свои собственные ссылочные идентификаторы и ссылаться на свои собственные экземпляры.
Это явно плохой взломанный компромисс, поскольку я дублирую ссылки, которые не должны дублироваться.
Есть ли способ узнать, что уже написано, чтобы узнать, смогу ли я найти идентификатор для уже сериализованного элемента?
Привет
Craig.