作成したオブジェクトを Windows レジストリに保存し、アプリケーションを再度開いて読み取る必要がありますか? 文字列を保存して読み取る方法は知っていますが、これは複雑なオブジェクトです。
何か案が?
作成したオブジェクトを 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