デシリアライズによるクラス変換
クラス⇔バイナリデータの変換についてメモ
通信用にデータフォーマットを変換する
■デシリアライズ
//バイトデータをデータセットから取得
var byteData = SampleDataSet.binaryMember;
//MemoryStreamクラスを使用する
//バイナリデータをデシリアライズし、クラスに変換する
using (MemoryStream stream = new MemoryStream(byteData))
{
BinaryFormatter binaryFmt = new BinaryFormatter();
//バイナリデータをデシリアライズする
SampleClassInstance = binaryFmt.Deserialize(stream) as SampleClass;
}
return binaryMemberInstance;
}
■シリアライズ
byte[] byteData;
using (MemoryStream stream = new MemoryStream())
{
BinaryReader reader = new BinaryReader(stream);
BinaryFormatter formatter = new BinaryFormatter();
//クラスをシリアライズし、バイナリデータに変換する
formatter.Serialize(reader.BaseStream, SampleClassInstance);
//読出し位置を初期化
reader.BaseStream.Position = 0;
//バイナリデータをバイト配列に格納
byteData = reader.ReadBytes((char)stream.Length);
//データセットのバイナリメンバにデータをセットする SampleDataSet.binaryMember = byteData;
}