Kann XML nicht mit XML Deserializer in eine Liste deserialisieren

Dies folgt auf meine vorherige FrageListe der Schnittstellen mit XML-Serialisierung serialisieren

    public class MeterWalkOrder
    {
        public MeterWalkOrder()
        {
            Meters = new List<IMeter>();
        }

        public String Name { get; set; }

        [XmlIgnore]
        public List<IMeter> Meters { get; set; }

        [XmlArrayItem(ElementName = "Meter")]
        [XmlArray(ElementName = "Meters")]
        public List<Meter> SerializableMeters
        {
            get
            {
                return Meters.Cast<Meter>().ToList();
            }
            set
            {
                Meters = new List<IMeter>(value);                
            }
        }
    }

     public interface IMeter {
       int MeterID { get; set; }
     }

     public class Meter : IMeter {
         public int MeterID { get; set; }
         public string SerialNumber { get; set; }
     }
}

Ich verwende die folgende Erweiterungsmethode, um das XML wieder in mein Objekt zu deserialisieren (im Idealfall würde ich die Erweiterungsmethode vorziehen, wenn sie nicht zum Objekt gehört, aber ich bin mit Erweiterungsmethoden nicht so vertraut, also habe ich sie erst einmal verlassen) ...

public static class SerializationExtensions
{

    public static T LoadFromXML<T>(this string xmlString)
    {
        T returnValue = default(T);

        XmlSerializer serial = new XmlSerializer(typeof(T));
        StringReader reader = new StringReader(xmlString);
        object result = serial.Deserialize(reader);

        if (result != null && result is T)
        {
            returnValue = ((T)result);
        }

        reader.Close();

        return returnValue;
    }

.... allerdings wenn ich die XML unten gebe ....

<?xml version="1.0"?>
<MeterWalkOrder xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Name>Red Route</Name>
  <Meters>
    <Meter>
      <MeterID>1</MeterID>
      <SerialNumber>12345</SerialNumber>
    </Meter>
    <Meter>
      <MeterID>2</MeterID>
      <SerialNumber>SE</SerialNumber>
    </Meter>
  </Meters>
</MeterWalkOrder>

Keine Zähler sind belegt?

Weiß jemand, was dieses Problem verursachen könnte? Das XML ist gültig und SerializeableMeters ist einfach eine Eigenschaft, die aus Metern liest und in diese schreibt, sie jedoch aufgrund der bekannten Probleme bei der Verwendung von Schnittstellen bei der Serialisierung als konkrete Klasse ausgib

Antworten auf die Frage(1)

Ihre Antwort auf die Frage