J'écris des éléments d'un type particulier dans le fichier xml sortant en utilisant IXmlSerializable. J'ai implémenté le schéma et j'écris les éléments. Le code qui suit est un exemple.Recherche de références dans 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);
}
}
Le problème est que je MyType est déclaré en utilisant des références
[DataContract(IsReference = true)]
public class MyType { ...
Ainsi, lorsque l'article a déjà été écrit au xml il doit être une référence.
Comment savoir si une référence a déjà été écrite dans le fichier xml? Je suis d'avis que je dois simplement ignorer les références dont je n'ai explicitement pas le contrôle. De cette façon, je vais créer mes propres références et référencer mes propres instances.
Il s'agit clairement d'un compromis piraté car je duplique des références qui ne doivent pas être dupliquées.
Est-il possible de trouver ce qui a déjà été écrit pour voir si je peux trouver un identifiant pour l'article déjà sérialisé?
Observe
Craig.