猫がプログラムを組む

猫は直ぐに忘れるのでメモを取ります

クラスをシリアライズしてファイル保存する

シリアルライズしてファイルの読み書きするクラス

Public Class clsSerialize

    ''' <summary>
    ''' シリアライズされたデータの読み込み
    ''' </summary>
    ''' <typeparam name="T">クラス</typeparam>
    ''' <param name="_fp">ファイルパス</param>
    ''' <param name="_cls">読み込むオブジェクト</param>
    ''' <remarks></remarks>
    Public Shared Sub loadSerialize(Of T)(_fp As String, ByRef _cls As T)

        Dim serializer As New System.Xml.Serialization.XmlSerializer(GetType(T))
        Dim _obj As Object = Nothing

        If My.Computer.FileSystem.FileExists(_fp) = True Then
            Using fs As New System.IO.FileStream(_fp, System.IO.FileMode.Open)
                _obj = serializer.Deserialize(fs)
            End Using
            _cls = CType(_obj, T)
        End If

    End Sub


    ''' <summary>
    ''' シリアライズされたデータの保存
    ''' </summary>
    ''' <typeparam name="T">クラス</typeparam>
    ''' <param name="_fp">ファイルパス</param>
    ''' <param name="_cls">保存するオブジェクト</param>
    ''' <remarks></remarks>
    Public Shared Sub saveSerialize(Of T)(_fp As String, ByRef _cls As T)

        Dim serializer As New System.Xml.Serialization.XmlSerializer(GetType(T))
        Dim _obj As Object = _cls

        Using fs As New System.IO.FileStream(
            _fp, System.IO.FileMode.Create)
            serializer.Serialize(fs, _obj)
            fs.Flush()
        End Using

    End Sub

End Class

使用方法は、

' 設定保持クラス
Public Class clsSetting
    Private _val As Boolean
    Public Property val As Boolean
        Get
            Return _val
        End Get
        Set(value As Boolean)
           _val = value
        End Set
    End Property
End Class

Public _setting As New clsSetting

' クラスの読み込み
clsSerialize.loadSerialize(Of clsSetting)("clsSetting.xml",_setting)
' クラスの保存
clsSerialize.saveSerialize(Of clsSetting)("clsSetting.xml",_setting)

煩雑なファイル操作を必要とせずに、変数や状態の保存、読み出しができるので、重宝しています。