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();
                }
            }
        }