Sérialiser un objet qui contient une liste d'objets

J'ai réussit à construire un NotInheritable Serilizer que serilizes toutes mes classes, et la liste des classes, avec succès.
Jusqu'à ce que j'ai réussit à construire une liste de classe qui contient une liste de classes.
Je suis le runtime Exception: Il y a une erreur de la génération du document XML. résultant en une parfaitement XML vide 🙁

Ce sont mes classes à serilize:

<System.Serializable> _
<System.Xml.Serialization.XmlInclude(GetType(StatisticItem))> _
Public Class Statistic
    Public StatItem As New list(Of StatisticItem)
    'Bla bla bla
end class


<Serializable> _
Public Class StatisticItem              
        Private stStatPath As String = ""    
        Private eStatType As StatType = 0
        Private iBatchNumber As Int32 = 0
end class

Et le sérialiseur:

Public NotInheritable Class XmlSerializer       

    Public Shared Sub Serialize(Of T)(ByVal obj As T, sConfigFilePath As String)        
        Dim XmlBuddy As New System.Xml.Serialization.XmlSerializer(GetType(T))
        Dim MySettings As New System.Xml.XmlWriterSettings()
        MySettings.Indent = True
        MySettings.CloseOutput = True       
        Dim MyWriter As System.Xml.XmlWriter=System.Xml.XmlWriter.Create(sConfigFilePath,MySettings)        
        XmlBuddy.Serialize(MyWriter,obj) 
        MyWriter.Flush()
        MyWriter.Close()    

        ' ----- OLD CODE FOR SERIALIZE, NEXTLINE IN XML DOESNT WORK ON WIN CE -------, 
        ' B.T.W. Using This code to serilize gives the exact same fault             
        'Dim XmlBuddy As New System.Xml.Serialization.XmlSerializer(GetType(T))
        'Dim objStreamWriter As New StreamWriter(sConfigFilePath)
        'XmlBuddy.Serialize(objStreamWriter, obj)
        'objStreamWriter.Close()
    End Sub
 end class

Et c'est l'appel de:

 XmlSerializer.Serialize(Of list(Of Statistic))(StatCollection, CommCtrl.PathStatisticFile)

Si je commente la liste dans StatisticItem tout fonctionne.

Je pense que si j'en Œuvre IXmlSerializable dans StatisticItem je peux dire le sérialiseur comment travailler pour le faire fonctionner, mais je vois d'autres exemple de code sur internet où cela fonctionne sans tous ces efforts
et je préfère une solution propre, ce qui est environ le même que tous mes autres classes.

Espère que l'un de vous les gars, vous pouvez m'aider

Rob, qui ne fera pas votre code d'onu-propre. L'ajout de ce dont vous avez besoin n'est pas inutile. Pouvez-vous l'ajouter, le tester, et laissez-nous savoir si cela a fonctionné. A aucun sens dans la fixation de ce qui n'est pas cassé.
J'étais en train de travailler sur elle, mais maintenant je remarque que j'ai à écrire le code pour écrire tous les noms et les valeurs de Statisic et statistique des éléments. et bien sûr le code pour lire tout par la suite. Je sais il doit y avoir un moyen plus facile pour sérialiser. J'ai fait le sérialiseur comme cela, de sorte qu'il serait en mesure de reconnaître le type d'objet qu'il reçoit. Damm vous de fin de soirée Bbq
Le serialisers ne serialise Public propriétés (avec votre code comme il est). Ne pouvez-vous pas changer le Privates à Publics??
J'ai essayé, je ne comprend pas les propriétés publiques dans le code. Je suis encore à essayer certaines choses maintenant, j'ai un regard nouveau, Si je ne peux pas résoudre ce matin je vais avoir à taper tout à la main avec le IXmlSerializable.. Trop mal si il y a quelqu'un avec de bons conseils, toute aide est utile.

OriginalL'auteur Rob Heijligers | 2014-08-08