Skip to content

Instantly share code, notes, and snippets.

@forcewake
Created November 11, 2014 08:16
Show Gist options
  • Select an option

  • Save forcewake/65b61849b4f0dbeeacaa to your computer and use it in GitHub Desktop.

Select an option

Save forcewake/65b61849b4f0dbeeacaa to your computer and use it in GitHub Desktop.

Revisions

  1. forcewake created this gist Nov 11, 2014.
    39 changes: 39 additions & 0 deletions SerializeExtensions.cs
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,39 @@
    public static class SerializeExtensions
    {
    /// <summary>
    /// Serializes the specified obj.
    /// </summary>
    /// <param name="obj">The obj.</param>
    /// <returns>A string representing serialized data</returns>
    public static string Serialize(this object obj)
    {
    //Check is object is serializable before trying to serialize
    if (obj.GetType().IsSerializable)
    {
    using (var stream = new MemoryStream())
    {
    var serializer = new XmlSerializer(obj.GetType());
    serializer.Serialize(stream, obj);
    var bytes = new byte[stream.Length];
    stream.Position = 0;
    stream.Read(bytes, 0, bytes.Length);

    return Encoding.UTF8.GetString(bytes);
    }
    }
    throw new NotSupportedException(string.Format("{0} is not serializable.", obj.GetType()));
    }

    /// <summary>
    /// Deserializes the specified serialized data.
    /// </summary>
    /// <param name="serializedData">The serialized data.</param>
    /// <returns></returns>
    public static T Deserialize<T>(this string serializedData)
    {
    var serializer = new XmlSerializer(typeof(T));
    var reader = new XmlTextReader(new StringReader(serializedData));

    return (T)serializer.Deserialize(reader);
    }
    }