【发布时间】:2019-05-15 14:46:46
【问题描述】:
我创建了三个类:
课程 cStage cActivity
现在,我正在尝试序列化列表属性,并为我的两个类设置提供以下代码:
cLesson.vb
<Serializable()> _
<System.Xml.Serialization.XmlInclude(GetType(List(Of cStage)))> _
Public Class cLesson
Private lStages As New List(Of cStage)
Public Sub addStage(sStage As String)
Dim oStage As New cStage
oStage.Title = sStage
lStages.Add(oStage)
End Sub
Public Sub listStages()
For Each oStage In lStages
MsgBox(oStage.Title)
Next
End Sub
End Class
cStage.vb
<Serializable> _
Public Class cStage
Private sTitle As String
Public Property Title() As String
Get
Return sTitle
End Get
Set(ByVal Value As String)
sTitle = Value
End Set
End Property
End Class
Form1.vb - 序列化调用
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim xml_serializer As New Xml.Serialization.XmlSerializer(GetType(cLesson))
'Word document pointers
Dim pDoc As String
'Open master document
Dim fdFile As SaveFileDialog = New SaveFileDialog
fdFile.Title = "Save Reading Resource"
fdFile.Filter = "Dat Files|*.dat"
fdFile.RestoreDirectory = True
If fdFile.ShowDialog = Windows.Forms.DialogResult.OK Then
pDoc = fdFile.FileName
Dim stream_writer As New StreamWriter(pDoc, False)
Try
xml_serializer.Serialize(stream_writer, oLesson)
stream_writer.Close() ' close the file
Catch ex As Exception
MsgBox(ex.InnerException.ToString)
End Try
End If
End Sub
但是,当我运行这个程序时,我没有得到 XML 中出现的列表属性。
最后,我想要一个包含阶段列表的课程,每个阶段都可以有一个活动列表。
任何建议将不胜感激。我在网上查了很多,但找不到任何帮助。
更新 1
公开列表允许它被序列化。但是,我希望它是私有的。
作为新列表的公共 lStages(Of cStage)
【问题讨论】:
-
试试GetType(List(Of cStage))
-
一个令人尴尬的错误 - 但仍然无法正常工作
标签: vb.net list serialization properties