Je le code XML suivant que je suis en train de désérialiser comme suit mais j'obtiens l'erreur:Impossible de désérialiser une chaîne XML
There was an error reflecting type 'System.Collections.Generic.List`1[MyApp.Models.Field]
Ci-dessous est mon code
public class FieldList
{
[XmlArray("fields")]
[XmlArrayItem("field")]
List<Field> Fields { get; set; }
}
public class Field
{
[XmlAttribute("type")]
public string Type { get; set; }
[XmlAttribute("required")]
public bool Required { get; set; }
[XmlAttribute("label")]
public string Label { get; set; }
[XmlAttribute("name")]
public string Name { get; set; }
[XmlElement("option")]
[JsonProperty("values")]
public List<Option> Options { get; set; }
}
public class Option
{
[XmlAttribute("label")]
public string Label { get; set; }
[XmlAttribute("value")]
public string Value { get; set; }
[XmlAttribute("selected")]
public bool Selected { get; set; }
/// <remarks/>
[XmlIgnore()]
public bool SelectedSpecified { get; set; }
[XmlText]
public string Text { get; set; }
}
var xml = @"<?xml version=""1.0"" ?>
<form-template>
<fields>
<field type=""select"" required=""true"" label=""Cars"" name=""cars"" >
<option label=""Toyota"" value=""Toyota"" selected=""true"">Toyota</option>
<option label=""Nisan"" value=""Nisan"" >Nisan</option>
</field>
</fields>
</form-template>";
var serializer = new XmlSerializer(typeof(FieldList), new XmlRootAttribute("form-template"));
var stringReader = new StringReader(xml);
var xmlFields = (FieldList)serializer.Deserialize(stringReader);
Qu'est-ce que je fais faux?
* MISE À JOUR *
Selon les commentaires ci-dessous l'évolution
public IEnumerable<Option> Options { get; set; }
Pour
public List<Option> Options { get; set; }
corrige l'erreur mais maintenant rien est désérialisée - la xmlFields
variable est vide ??? Ai-je besoin de lire à partir d'un nœud particulier ou ne devrait-il pas importer?
Le 'InnerException' doit contenir un indice. –
@ManfredRadlwimmer en changeant 'IEnumerable
Ma meilleure supposition est que parce que la propriété suivante est une interface public IEnumerable