Implementowanie IXmlSerializable na obiekcie kolekcji
Mam plik xml wyglądający mniej więcej tak:
<xml>
<A>value</A>
<B>value</B>
<listitems>
<item>
<C>value</C>
<D>value</D>
</item>
</listitems>
</xml>
I mam dwa obiekty reprezentujące ten 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);
}
}
Używam XmlSerializer do serializacji / deserializacji obiektu XmlObject do pliku.
Problem polega na tym, że gdy zaimplementowałem niestandardowe funkcje IXmlSerializable na moim „podobiekcie”, zawsze otrzymuję tylko jeden element (pierwszy) w kolekcji XmlObject.listitems podczas deserializacji pliku. Jeśli usunę: IXmlSerializable, wszystko działa zgodnie z oczekiwaniami.
Co mam zrobić źle?
Edycja: Mam zaimplementowane IXmlSerializable.GetSchema i muszę użyć IXmlSerializable na moim "obiekcie-dziecku" do wykonania jakiejś niestandardowej transformacji wartości.