using System.IO; using System.Runtime.Serialization.Formatters.Binary; namespace SignalsMVVM.HelperClasses { public static class BinaryFormatterSerialization { static private BinaryFormatter serializer = new BinaryFormatter(); public static T DeepCloneBinaryFormatter(this T obj) { return obj.SerializeBinaryFormatter().DeserializeBinaryFormatter(); } public static byte[] SerializeBinaryFormatter(this T obj) { using (var ms = new MemoryStream()) { serializer.Serialize(ms, obj); return ms.ToArray(); } } public static T DeserializeBinaryFormatter(this byte[] data) { using (var ms = new MemoryStream(data, false)) return (T)serializer.Deserialize(ms); } } }