view MetroWpf/MetroWpf.Framework/FileSerializer.cs @ 109:11994ccdc50b

First wave of tests complete
author stevenhollidge <stevenhollidge@hotmail.com>
date Sun, 06 May 2012 20:37:32 +0100
parents 060f02cd4591
children
line wrap: on
line source

using System;
using System.Collections.Generic;
using System.IO;
using System.Runtime.Serialization;
using System.Text;
//using Newtonsoft.Json;

namespace MetroWpf.Framework
{
  public class FileSerializer
  {
    //public void SerializeJson(string filename, object obj)
    //{
    //  string json = JsonConvert.SerializeObject(obj);
    //  Serialize(filename, json);
    //}

    public void Serialize(string filename, string text)
    {
      using (StreamWriter writer = new StreamWriter(filename))
        { writer.Write(text); }
    }

    public void Serialize(string filename, IFormatter formatter, object objectToSerialize)
    {
      using (Stream stream = File.Open(filename, FileMode.Create))
        formatter.Serialize(stream, objectToSerialize);
    }

    public string Deserialize(string filename)
    { 
      StringBuilder sb = new StringBuilder();
      using (StreamReader reader = new StreamReader(filename))
        if (reader != null)
          sb.AppendLine(reader.ReadToEnd());

      return sb.ToString();       
    }

    //public List<T> DeserializeJson<T>(string filename)
    //{
    //  var json = Deserialize(filename);
    //  return JsonConvert.DeserializeObject<List<T>>(json);
    //}

    public T[] Deserialize<T>(string filename, IFormatter formatter, Type type)
    {
      using (Stream stream = File.Open(filename, FileMode.Open))
      {
        var items = (T[])formatter.Deserialize(stream);
        return items;
      }
    }
  }
}