public static byte[] ObjectToBinary(Object obj, Boolean compress) { MemoryStream MemStream = null; DeflateStream DStream = null; MemoryStream OutStream = null; BinaryFormatter BinFormatter = default(BinaryFormatter); byte[] B = null; try { MemStream = new MemoryStream(); BinFormatter = new BinaryFormatter(); BinFormatter.Serialize(MemStream, obj); if (compress) { B = MemStream.ToArray(); OutStream = new MemoryStream(); DStream = new DeflateStream(OutStream, CompressionMode.Compress, false); DStream.Write(MemStream.ToArray(), 0, B.Length); DStream.Flush(); B = OutStream.ToArray(); } else { B = MemStream.ToArray(); } return(B); } finally { if ((OutStream != null)) { OutStream.Dispose(); } if ((DStream != null)) { DStream.Dispose(); } if ((MemStream != null)) { MemStream.Dispose(); } } }
public static bool BinaryToObject(byte[] Data, ref object obj, bool IsCompressed) { obj = null; MemoryStream MemStream = null; MemoryStream InputStream = null; DeflateStream DStream = null; BinaryFormatter BinFormatter = default(BinaryFormatter); byte[] B = null; try { MemStream = new MemoryStream(Data); BinFormatter = new BinaryFormatter(); BinFormatter.AssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple; if (IsCompressed) { DStream = new DeflateStream(MemStream, CompressionMode.Decompress, false); B = ReadFullStream(DStream); DStream.Flush(); InputStream = new MemoryStream(B); obj = BinFormatter.Deserialize(InputStream); } else { obj = BinFormatter.Deserialize(MemStream); } return(true); } finally { if ((DStream != null)) { DStream.Dispose(); } if ((InputStream != null)) { InputStream.Dispose(); } if ((MemStream != null)) { MemStream.Dispose(); } } }