Implementando IXmlSerializable en un objeto de colección

Tengo un archivo xml parecido a esto:

<xml>
  <A>value</A>
  <B>value</B>
  <listitems>
    <item>
      <C>value</C>
      <D>value</D> 
    </item>
  </listitems>
</xml>

Y tengo dos objetos que representan este 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 el XmlSerializer para serializar / deserializar el XmlObject al archivo.

El problema es que cuando implementé las funciones personalizadas IXmlSerializable en mi "subobjeto", siempre obtengo un solo elemento (el primero) en mi colección XmlObject.listitems al deserializar el archivo. Si elimino el: IXmlSerializable todo funciona como se esperaba.

¿Qué hago mal?

Edición: He implementado IXmlSerializable.GetSchema y necesito usar IXmlSerializable en mi "objeto secundario" para realizar alguna transformación de valor personalizado.

Respuestas a la pregunta(2)

Su respuesta a la pregunta