我需要将创建的对象保存到 Windows 注册表中并在重新打开应用程序后读取它?我知道如何保存和读取字符串,但这是一个复杂的对象。
任何想法?
您可能想要使用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