La sérialisation des Listes de Classes XML

J'ai une collection de classes que je veux pour sérialiser un fichier XML. Il ressemble à quelque chose comme ceci:

public class Foo
{
  public List<Bar> BarList { get; set; }
}

Où un bar est juste un wrapper pour une collection de propriétés, comme ceci:

public class Bar
{
  public string Property1 { get; set; }
  public string Property2 { get; set; }
}

Je veux marquer cette sorte qu'il génère un fichier XML utilisé pour la persistance, et aussi pour rendre les paramètres via une transformation XSLT pour une belle forme lisible par l'homme.

Je veux obtenir une belle représentation XML comme ceci:

<?xml version="1.0" encoding="utf-8"?>
<Foo>
  <BarList>
    <Bar>
      <Property1>Value</Property1>
      <Property2>Value</Property2>   
    </Bar>
    <Bar>
      <Property1>Value</Property1>
      <Property2>Value</Property2>   
    </Bar>
  </Barlist>
</Foo>

où sont tous les Bars de la Barlist sont écrites avec l'ensemble de leurs propriétés. Je suis assez sûr que je vais avoir besoin de certaines marques dans la définition de classe pour le faire fonctionner, mais je n'arrive pas à trouver la bonne combinaison.

J'ai marqué Foo avec l'attribut

[XmlRoot("Foo")]  

et la list<Bar> avec l'attribut

[XmlArray("BarList"), XmlArrayItem(typeof(Bar), ElementName="Bar")]

dans une tentative de dire le Sérialiseur ce que je veux. Cela ne semble pas fonctionner, cependant, et je viens d'obtenir une balise vide, à la recherche comme ceci:

<?xml version="1.0" encoding="utf-8"?>
<Foo> 
  <Barlist />
</Foo>

Je ne sais pas si le fait que je suis en utilisant Automatique des Propriétés devrait avoir aucun effet, ou si l'utilisation de médicaments génériques nécessite aucun traitement particulier. J'ai eu à travailler avec des types simples comme une liste de chaînes de caractères, mais une liste de classes jusqu'à présent m'échappe.

InformationsquelleAutor Jon Artus | 2008-10-07