J'ai utilisé XmlSerializer pendant de nombreuses années sans aucun problème. J'ai commencé un nouveau projet et la classe j'ai fait une liste étendue. Quand je suis allé sérialiser les données, j'ai perdu les propriétés que j'avais ajoutées à ma classe. Évidemment, je peux corriger cela en changeant autour de ma classe afin qu'elle ne longe plus List. Je me demandais vraiment pourquoi XmlSerializer ignore les propriétés de la liste.XmlSerializer n'agit pas comme je le pense
var data = new Data { Number = 3 };
data.AddRange(Enumerable.Range(5, 5));
var serializer = new XmlSerializer(typeof(Data));
var memoryStream = new MemoryStream();
serializer.Serialize(memoryStream, data);
memoryStream.Position = 0;
var dataSerialized = new StreamReader(memoryStream).ReadToEnd();
public class Data : List<int>
{
public int Number
{
get;
set;
}
}
Après l'extrait de code ci-dessus dataSerialized ressemble à ceci (son manque la propriété « Nombre »):
<?xml version="1.0"?>
<ArrayOfInt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<int>5</int>
<int>6</int>
<int>7</int>
<int>8</int>
<int>9</int>
</ArrayOfInt>
Réponse très claire –