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