Serializerつくってみた。

というわけで Serializer つくってみた。

/// <summary>
/// Serializer クラス。
/// </summary>
public class Serializer<T> {
  public T Deserialize( string filePath ) {
    using (var stream = File.Open( filePath, FileMode.Open )) {
      using (XmlDictionaryReader reader = XmlDictionaryReader.CreateBinaryReader(
        stream, null, new XmlDictionaryReaderQuotas() )
      ) {
        DataContractSerializer serializer = new DataContractSerializer( typeof( T ) );
        return (T)serializer.ReadObject( reader );
      }
    }
  }

  public void Serialize( string filePath, T graph ) {
    try {
      using (FileStream stream = File.Open( filePath, FileMode.Create )) {
        using (XmlDictionaryWriter writer
          = XmlDictionaryWriter.CreateBinaryWriter( stream )
        ) {
          DataContractSerializer serializer = new DataContractSerializer( typeof( T ) );
          serializer.WriteObject( writer, graph );
        }
      }
    } catch (Exception) {
      if (!File.Exists( filePath )) {
        File.Delete( filePath );
      }
      throw;
    }
  }
}