示例#1
0
        public static byte[] Pack(object data)
        {
            if (data is byte[])
            {
                using (MemoryStream mem = new MemoryStream())
                {
                    mem.WriteByte(0);                            // version
                    mem.WriteShort((short)CacheableType.Binary); // type
                    mem.WriteInteger(((byte[])data).Length);     // data length
                    mem.WriteBytes((byte[])data);                // data

                    return(mem.ToArray());
                }
            }
            else if (data is ICacheable)
            {
                ICacheable source = data as ICacheable;

                if ((source != null) && (source.StoredType != CacheableType.Unsupported))
                {
                    using (MemoryStream mem = new MemoryStream())
                    {
                        mem.WriteByte(0);                         // version
                        mem.WriteShort((short)source.StoredType); // type
                        source.Persist(mem);                      // data

                        return(mem.ToArray());
                    }
                }
            }

            if (data != null)
            {
                DebugHelper.Out("Attempt to serialize unsupported type of object: {0}", data.GetType().FullName);
            }

            return(null);
        }