0

J'ai une classe VB qui contient un tableau d'autres classes VB. Ensuite, je sérialiser un objet en XML à l'aideComment sérialiser une classe (avec ICollection)

Private Sub Serialize(myObject As Object, myObjectType As Type) 

     Dim ser As New XmlSerializer(myObjectType) 
     Dim myWriter As StreamWriter = New StreamWriter("D:\DataTest\myXMLFile.xml") 
     ser.Serialize(myWriter, myObject) 
     myWriter.Close() 

End Sub 

mes classes:

Public Class mySerializableClass 

     Public Property Name As String 
     Public Property Adresse As String 
     Public Property IdF As Integer 
     Public Property ISC() As myInnerSerializableClass 

End Class 

Public Class myInnerSerializableClass 

     Public Property CNSS As String 
     Public Property nom As String 

End Class 

Untill maintenant tout fonctionne bien (et mes fichiers XML est créé). Mais quand je remplacerai

Public Property ISC() As myInnerSerializableClass 

Avec

Public Property ISC() As ICollection(Of myInnerSerializableCass) 

je reçois un ARROR qui lit: Une erreur est survenue lors de la réflexion du type 'myCustomNameSpace.mySerializableClass'

post-scriptum J'ai d'abord besoin de l'ICollection pour le code EF, ou pour trouver un moyen de travailler avec des tableaux dans le code EF en premier.

Répondre

0

Appliquez les attributs XmlArray et XmlArrayItem à la propriété afin que le sérialiseur sache que la propriété doit être sérialisée en tant que liste.

<XmlArray("ISC"), XmlArrayItem("myInnerSerializableClass")> _ 
Public Property ISC() As ICollection(Of myInnerSerializableCass) 

En savoir plus

+0

L'erreur persiste, je pense que le problème est que ICollection est une interface. –

+0

@IsmailKarchi: [** Yup, vous avez raison à ce sujet **] (http://stackoverflow.com/a/15089253/3740093). Y a-t-il un autre type de collection/liste que vous pouvez utiliser? - De plus, devez-vous utiliser la sérialisation XML? Sinon, la sérialisation binaire est une alternative. –

+0

L'objectif derrière ceci est de créer un fichier XML à partir de données SQL. Savez-vous une solution de contournement pour remplacer ICollection dans la classe (nécessaire pour le code EntityFrameWork d'abord) –