首页 > 解决方案 > 是否有写入/导出列表/类项目值的功能?

问题描述

从外部应用程序中提取数据并将其写入包含多个子列表项的列表,这是一个缩小到主列表创建的示例:

Public Class clMain
    Public lsLevel_1 As New List(Of clLevel_1)
End Class

Public Class clLevel_1
    Public sgName As String
    Public lsLevel_2 As New List(Of clLevel_2)
End Class

Public Class clLevel_2
    Public sgName As String
    Public lsLevel_3 As New List(Of clLevel_3)
End Class

Public Class clLevel_3
    Public sgName As String
    Public sgComment As String
End Class

Module Code
    Sub Main()
        Dim lv_clMain As clMain = New clMain
        For lv_i16Level_1 = 10 To 11
            Dim lv_clLevel_1 As New clLevel_1
            lv_clLevel_1.sgName = "Level 1: " & lv_i16Level_1
            For lv_i16Level_2 = 20 To 21
                Dim lv_clLevel_2 As New clLevel_2
                lv_clLevel_2.sgName = "Level 2: " & lv_i16Level_2
                For lv_i16Level_3 = 30 To 31
                    Dim lv_clLevel_3 As New clLevel_3
                    lv_clLevel_3.sgName = "Level 3: " & lv_i16Level_3
                    lv_clLevel_2.lsLevel_3.Add(lv_clLevel_3)
                Next
                lv_clLevel_1.lsLevel_2.Add(lv_clLevel_2)
            Next
            lv_clMain.lsLevel_1.Add(lv_clLevel_1)
        Next
    End Sub
End Module

一旦列表被“填充”,我想将值写入/导出到文件中。什么是完成这项任务的好方法?我认为创建一个lv_clMain作为参数的函数。但是 aslv_clMain不是集合类型,它可以包含几个条目,lsLevel_1我对正确的方法有些迷茫。

标签: vb.net

解决方案


感谢用户Hursey,我找到了使用 XML 序列化的解决方案。

Function SerializeXml(ByVal obData As Object, ByVal sgFileName As String, tyData As Type)
    Dim obXmlSerializer As System.Xml.Serialization.XmlSerializer = New System.Xml.Serialization.XmlSerializer(tyData)
    Dim obSW As System.IO.TextWriter = New System.IO.StreamWriter(sgFileName)
    obXmlSerializer.Serialize(obSW, obData)
    obSW.Close()
End Function

推荐阅读