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 に答える