コード例 #1
0
        public static byte[] Serialize(IActivityLog activityLog)
        {
            List <Activity> list = activityLog.Query().Reverse <Activity>().ToList <Activity>();

            if (list.Count == 0)
            {
                return(Array <byte> .Empty);
            }
            byte[] array;
            using (MemoryStream memoryStream = new MemoryStream(list.Count * 128))
            {
                using (BinaryWriter binaryWriter = new BinaryWriter(memoryStream))
                {
                    binaryWriter.Write(1);
                    binaryWriter.Write(1);
                    binaryWriter.Write(0L);
                    List <ActivityLogSerializer.PropertySerializer> propertySerializers = ActivityLogSerializer.SerializeActivitySchema(binaryWriter);
                    binaryWriter.Write(list.Count);
                    foreach (Activity activity in list)
                    {
                        ActivityLogSerializer.SerializeActivity(binaryWriter, activity, propertySerializers);
                        if (memoryStream.Length > 10485760L)
                        {
                            throw new NotSupportedException(string.Format("Serialization of activity logs longer than {0} is not supported", 10485760));
                        }
                    }
                    array = new byte[memoryStream.Length];
                    Array.Copy(memoryStream.GetBuffer(), array, memoryStream.Length);
                }
            }
            return(array);
        }