XML形式の場合は、XmlSerializerを使いますがバイナリの場合は
- シリアライズしたいクラスに[Serializable]属性でマーク
- BinaryFormatterを利用する
という手順になります。
以下サンプルです。
// vim:set ts=4 sw=4 et ws is nowrap ft=cs: using System; using System.IO; using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary; namespace Gsf.Samples.CSharp{ [Serializable] public class BinarySerializableClass{ string _value; public string Value{ get{ return _value; } set{ _value = value; } } } class BinarySerializeSample{ const string FILE_NAME = "BinarySerializableClass.bin"; public void Execute(){ try{ BinarySerializableClass obj = new BinarySerializableClass(); obj.Value = obj.GetType().Name; // // 使用するフォーマッターを作成. // IFormatter formatter = new BinaryFormatter(); // // シリアライズ. // using(Stream stream = new FileStream(FILE_NAME, FileMode.Create, FileAccess.Write)){ formatter.Serialize(stream, obj); } // // 出力内容を確認. // using(Stream stream = new FileStream(FILE_NAME, FileMode.Open, FileAccess.Read)){ byte[] buffer = new byte[stream.Length]; stream.Read(buffer, 0, buffer.Length); foreach(byte b in buffer){ Console.Write*1{ BinarySerializableClass deObj = formatter.Deserialize(stream) as BinarySerializableClass; Console.WriteLine(deObj.Value); } }finally{ // // 後始末. // File.Delete(FILE_NAME); } } static void Main(){ new BinarySerializeSample().Execute(); } } }