Serialisation XML ICollection imbriqués

6RatsMorts Messages postés 7 Date d'inscription mercredi 26 mars 2003 Statut Membre Dernière intervention 2 mai 2012 - 2 mai 2012 à 17:02
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 - 2 mai 2012 à 17:39
Bonjour,

Jai le code suivant qui définit trois classe d'objet :
using System;
using System.Collections.Generic;
using System.Text;

namespace WindowsFormsApplication1
{
  public class Container1 : ICollection<Container2>
  {
    List<Container2> list = new List<Container2>();
    public Container1()
    {

    }

    public Container2 this[int index]
    {
      get
      {
        return list[index];
      }
    }

    #region ICollection<ChildObject> Membres

    public void Add(Container2 item)
    {
      list.Add(item);
    }

    public void Clear()
    {
      list.Clear();
    }

    public bool Contains(Container2 item)
    {
      return list.Contains(item);
    }

    public void CopyTo(Container2[] array, int arrayIndex)
    {
      list.CopyTo(array, arrayIndex);
    }

    public int Count
    {
      get { return list.Count; }
    }

    public bool IsReadOnly
    {
      get { return false; }
    }

    public bool Remove(Container2 item)
    {
      return list.Remove(item);
    }

    #endregion

    #region IEnumerable<ChildObject> Membres

    public IEnumerator<Container2> GetEnumerator()
    {
      return list.GetEnumerator();
    }

    #endregion

    #region IEnumerable Membres

    System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
    {
      return list.GetEnumerator();
    }

    #endregion
  }

  public class Container2 : ICollection<ChildObject>
  {
    List<ChildObject> list = new List<ChildObject>();
    public Container2()
    {

    }

    public ChildObject this[int index]
    {
      get
      {
        return list[index];
      }
    }

    #region ICollection<ChildObject> Membres

    public void Add(ChildObject item)
    {
      list.Add(item);
    }

    public void Clear()
    {
      list.Clear();
    }

    public bool Contains(ChildObject item)
    {
      return list.Contains(item);
    }

    public void CopyTo(ChildObject[] array, int arrayIndex)
    {
      list.CopyTo(array,arrayIndex);
    }

    public int Count
    {
      get { return list.Count; }
    }

    public bool IsReadOnly
    {
      get { return false; }
    }

    public bool Remove(ChildObject item)
    {
      return list.Remove(item);
    }

    #endregion

    #region IEnumerable<ChildObject> Membres

    public IEnumerator<ChildObject> GetEnumerator()
    {
      return list.GetEnumerator();
    }

    #endregion

    #region IEnumerable Membres

    System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
    {
      return list.GetEnumerator();
    }

    #endregion
  }

  public class ChildObject
  {
    public string Name;
    public int Value;

    public ChildObject()
    {

    }
  }
}


Je désire sérialiser une instance d'objet "Container1" à l'aide d'un "XmlSerializer" comme suit :
      FileStream fs = new FileStream("C:\\serializeContainers.xml", FileMode.Create);
      XmlSerializer x = new XmlSerializer(typeof(Container1));
      x.Serialize(fs, o1);
      fs.Close();


Une erreur que je ne comprend pas se produit se produit :

"Impossible de générer une classe temporaire (result=1).
error CS0136: Une variable locale nommée 'e' ne peut pas être déclarée dans cette portée, car elle modifierait la signification de 'e', déjà utilisée dans une portée 'parent ou en cours' pour désigner autre chose"

Pourquoi ca ne marche pas? Un bug dans le framework? une solution?

Merci

1 réponse

cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
2 mai 2012 à 17:39
Salut,

ça, ça me parle pas franchement :
"Impossible de générer une classe temporaire"

Par contre pour le reste de l'erreur cela semble clairement indiquer que tu définies 2 variables avec un même nom (au hasard un paramètre de type EventArgs nommé e et une variable locale e dans le corps de ladite fonction). Par contre ce serait plutôt du côté du code que tu n'as pas posté, donc je peux pas confirmer.
0
Rejoignez-nous