シリアライズ

シリアライズ形式

  • XmlSerializer
  • SoapFormatter(System.Runtime.Serialization.Formatters.Soap)
  • BinaryFormatter
/// <summary>
/// Xml テキスト取得。
/// </summary>
/// <param name="obj">対象オブジェクト。</param>
/// <returns>取得された Xmlテキスト。</returns>
private static string ToXmlText( object obj ) {
  XmlSerializer serializer = new XmlSerializer( obj.GetType() );
  MemoryStream ms = new MemoryStream();

  serializer.Serialize( ms, obj );
  ms.Position = 0;
  byte[] buffer = new byte[ms.Length];
  ms.Read( buffer, 0, buffer.Length );
  return Encoding.UTF8.GetString( buffer );
}

public static void SaveItem( string fileName, object obj ) {
  File.WriteAllText( fileName, ToXmlText( obj ), Encoding.UTF8 );
}

public static T LoadItem<T>( string fileName ) {
  if ( File.Exists( fileName ) ) {
    try {
      XmlSerializer serializer = new XmlSerializer( typeof( T ) );
      using ( var stream = File.OpenRead( fileName ) ) {
        return (T)serializer.Deserialize( stream );
      }
    } catch ( Exception ) {
    }
  }
  return default( T );
}