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