DOBON.NET DOBON.NETプログラミング掲示板過去ログ

シリアル化について

分類:[.NET]

メンバ変数にPenとSolidBrushをもつクラスオブジェクトをシリアル化して
バイナリファイルに保存,読み込んで復元したいと考えていますが,これら2つの
オブジェクトは,Serializableでないため,通常の方法ではシリアル化できません.
これらのうち,ユーザーが変更するのは
Pen…色,太さ,スタイル
SolidBrush…色
だけなので,これらを別途変数としてもち,保存させ,
読み込み時に,シリアル化のカスタマイズを使って,
PenやSolidBrushを生成させ,保存しておいた色などをPen等に与えることで
オブジェクトを復元しようかと考えているのですが,
ヘルプ等を読んでも,カスタマイズの方法が,いまいちよくわかりません.

このような書き方でご理解していただけるかどうかわかりませんが,
ご理解できた方で,例文等,何か参考になることがあれば教えてください.
よろしくお願いいたします.
  • 題名: Re[1]: シリアル化について
  • 著者: TY
  • 日時: 2004/02/10 17:44:10
  • ID: 2446
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
自己レスです.
試行錯誤してできました.ありがとうございました.
こんな感じです.

<Serializable()> Public Class StringTool
Implements ISerializable
<NonSerialized()> Public stBrush As SolidBrush
Private Bcl As New Color
Public Sub New()

End Sub
Protected Sub New(ByVal info As SerializationInfo, ByVal context As StreamingContext)
Dim cl As New Color
cl = info.GetValue("BC", GetType(Color))
If cl.Name = "0" Then
stBrush = Nothing
Bcl = Nothing
Else
stBrush = New SolidBrush(cl)
Bcl = cl
End If
End Sub

Private Sub GetObjectData(ByVal info As SerializationInfo, ByVal context As StreamingContext) _
Implements ISerializable.GetObjectData
info.AddValue("BC", Bcl)
End Sub

Public Sub SetProperty(ByVal br As Brush)
stBrush = br
If stBrush Is Nothing Then
Bcl = Nothing
Else
Bcl = stBrush.Color
End If
End Sub

End Class
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板