Ho un file XML guardando un po 'come questo:Implementazione IXmlSerializable su un oggetto di collezione
<xml>
<A>value</A>
<B>value</B>
<listitems>
<item>
<C>value</C>
<D>value</D>
</item>
</listitems>
</xml>
e ho una due oggetti che rappresentano questo xml:
class XmlObject
{
public string A { get; set; }
public string B { get; set; }
List<Item> listitems { get; set; }
}
class Item : IXmlSerializable
{
public string C { get; set; }
public string D { get; set; }
//Implemented IXmlSerializeable read/write
public void ReadXml(System.Xml.XmlReader reader)
{
this.C = reader.ReadElementString();
this.D = reader.ReadElementString();
}
public void WriteXml(System.Xml.XmlWriter writer)
{
writer.WriteElementString("C", this.C);
writer.WriteElementString("D", this.D);
}
}
uso il XmlSerializer per serializzare/deserializzare XmlObject in un file.
Il problema è che quando ho implementato le funzioni personalizzate IXmlSerializable sul mio oggetto "oggetto secondario", ottengo sempre un elemento (il primo) nella mia raccolta XmlObject.listitems durante la deserializzazione del file. Se rimuovo: IXmlSerializable tutto funziona come previsto.
Cosa faccio di sbagliato?
Modifica: ho implementato IXmlSerializable.GetSchema e ho bisogno di utilizzare IXmlSerializable sul mio "oggetto figlio" per eseguire alcune trasformazioni del valore personalizzato.
Grazie mille. –