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