0

我有一个包含其他VB类的数组的VB类。然后,我用序列如何序列化一个类(有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 

我的课的对象到XML:(创建和我的XML文件)

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 

,直到目前一切工作正常。但是,当我更换

Public Property ISC() As myInnerSerializableClass 

随着

Public Property ISC() As ICollection(Of myInnerSerializableCass) 

我得到一个arror,上面写着:类型的反射过程中出现错误 'myCustomNameSpace.mySerializableClass'

附:我首先需要用于EF代码的ICollection,或者先找到一种在EF代码中处理数组的方法。

回答

0

XmlArrayXmlArrayItem属性应用于该属性,以便序列化程序知道应将该属性序列化为列表。

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

更多

+0

错误仍然存​​在,我认为这个问题是ICollection的是一个接口。 –

+0

@IsmailKarchi:[**是的,你是对的**](http://stackoverflow.com/a/15089253/3740093)。有没有其他收集/列表类型可以使用? - 另外,你必须使用XML序列化?如果不是,则可以使用二进制序列化。 –

+0

这背后的客体是从sql数据创建xml文件。你知道任何解决方法来替换类中的ICollection(首先需要EntityFrameWork代码) –