1

我需要将创建的对象保存到 Windows 注册表中并在重新打开应用程序后读取它?我知道如何保存和读取字符串,但这是一个复杂的对象。

任何想法?

4

1 回答 1

2

您可能想要使用XmlSerializer(或其他序列化程序)。它易于使用,文档中充满了示例。

但为什么将其存储在注册表中?

更好地使用应用程序设置和用户设置

编辑:

而不是注册表,将您的对象保存到用户的 ApplicationData 目录中的文件中。您可以使用以下命令获取此目录的路径

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

完整示例:

Imports System.IO
Imports System.Xml.Serialization

Module Module1

    Public Class MySuperClass
        Public Property MyString() As String
        Public Property MyInt() As Int32
    End Class

    Public Sub Main(ByVal args() As String)
        Dim myFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "MyApplication")
        If Not Directory.Exists(myFolder) Then
            Directory.CreateDirectory(myFolder)
        End If

        Dim myFile = Path.Combine(myFolder, "MySettings.txt")

        Dim o = New MySuperClass With {.MyString = "Hi!", .MyInt = 42}
        Dim x = New XmlSerializer(GetType(MySuperClass))

        Using sr = New StreamWriter(myFile)
            ' Save directly to file
            x.Serialize(sr, o)
        End Using

        ' for demonstrating purpose
        o = Nothing

        Using sr = New StreamReader(myFile)
            ' Load directly from file
            o = CType(x.Deserialize(sr), MySuperClass)
        End Using

    End Sub

End Module
于 2012-06-22T07:29:56.563 回答