1 votes

Sérialisation XML Les collections vides ne se ferment pas d'elles-mêmes

Je me demande si quelqu'un peut m'aider avec cette question ennuyeuse mais triviale (en termes de besoin). J'ai un objet qui contient une collection d'objets.

 public class OuterClass
  {
    InnerClasses innerClasses= new InnerClasses();
     public InnerClasses InnerClasses
    {
      get {return innerClasses; }
    }
    public string Name
   {
     get;set;
   }
  }

  public class InnerClasses:List<InnerClass>
  {

  }
  public class <InnerClass>
  {

  }

En fait, le problème que je rencontre est que si je le passe à travers un sérialiseur xml

    var outer = new OuterClass(){Name="Name"}
    var xmlSerializer = new XmlSerializer(GetType());
    var stringBuilder = new StringBuilder();
    var stringWriter = new StringWriter(stringBuilder);    
    xmlSerializer.Serialize(stringWriter, this);
    return stringBuilder.ToString();

Je me demande pourquoi, alors que je n'ai pas de classes internes, il émet

<OuterClass>
 <Name>Name</Name>
 <InnerClasses ></InnerClasses>
</OuterClass>

Pourquoi ne place-t-il pas InnerClasses comme une balise fermée ?

Je sais que le code ci-dessus va fonctionner, mais je ne peux pas mettre la liste complète du code. (Je suis à la recherche d'indications sur ce qui pourrait être à l'origine de ce problème.

Je n'arrive pas à comprendre pourquoi il ne le fait pas par défaut.

Merci de m'indiquer où chercher.

1voto

Adam Haile Points 12576

J'ai toujours remarqué la même chose, mais d'après ce que j'ai trouvé, c'est simplement la façon dont la classe de sérialisation a été implémentée. Ils ont simplement choisi de ne pas utiliser les balises auto-fermantes. J'espère que cela sera modifié dans les futures implémentations.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X