シリアライズ、クラス、オブジェクトの設定の保存
クラス、オブジェクトの設定の保存して復元のテスト
やってみたいこと、目的は
Pixtack紫陽花での文字の描画で文字の設定を保存しておいて
次回にアプリを起動した時に設定を反映するようにしたい
終了時の設定を復元したい
起動するたびにフォント名や色、大きさ、影の有無とかを指定するのが面倒
一個だけの設定なら前回の
フォントの色赤とフォントの色青とか両方の保存はできなさそう
調べていてシリアライズってのを使うとできそうってことになった
そのシリアライズの中でもバイナリ形式で保存が良さそう
テストしてみた
数値と文字列と色の値を持つ適当なクラスを作成、テストなので後処理とかは省いている
画像だとこう
F:\png\data.binにバイナリのファイルが保存される
結果
xmlでは今回の目的には合わなかったけど
保存したファイルを開いてみてみる
<SampleClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Number>123</Number>
<Message>testdesu</Message>
<cr>3</cr>
<cg>88</cg>
<cb>23</cb>
<col />
</SampleClass>
こうなっている
記録されていない項目がある
色のColorとcaアルファが記録されていない
caアルファは他の「Number数値]と同じinteger型の変数(フィールド?)なんだけど
Privateで宣言しているから記録されないみたい
Color型の変数も無視される
次はバイナリ形式にシリアライズ、こっちは期待通り
メモ帳で開くと
g繧キ繝ェ繧「繝ゥ繧、繧コ繝・す繝ェ繧「繝ゥ繧、繧コ繝・せ繝・ Version=1.0.0.0, Culture=neutral, PublicKeyToken=null QSystem.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a O繧キ繝ェ繧「繝ゥ繧、繧コ繝・す繝ェ繧「繝ゥ繧、繧コ繝・せ繝・TestClass繝・せ繝育畑繧ッ繝ゥ繧ケ Number謨ー蛟、Message譁・ュ怜・_col濶イca繧「繝ォ繝輔ぃcr襍、cg邱・cb髱・ System.Drawing.Color { testdesu・System.Drawing.Color namevalue
knownColorstate
X€ € X
こうだけどデシリアライズで復元されたところを
ブレークポイントに指定しておいてからアプリを実行して
ブレークポイントで一時停止するので
デシリアライズで復元されたものを入れたobj2の中身をローカルウィンドウで見てみるとColorやPrivateで宣言したcaアルファも復元されているのがわかった!
ローカルウィンドウの表示もメモ
これでシリアライズってのを使えばクラス自体をファイルにして保存して
そのファイルを読み込んで復元できるのがわかった(ほんとに?)
ここまでだと一個しか保存できていないようなものだから
今度はこれを複数にしたい
具体的にどうすればいいか思いつかないけどなんとか
次回
参照したところ