Riverside Learning LABO(Skill/Idea/Code)

よりよいシステムのため工学系と人間系の学習下書きメモ

デシリアライズによるクラス変換

クラス⇔バイナリデータの変換についてメモ
 通信用にデータフォーマットを変換する
 ■デシリアライズ
//バイトデータをデータセットから取得
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; 
}