//public byte[] Tag //{ // get // { // //if (ForSerialize) // // return tag; // IDescriptor descriptor = GetDescriptor(this); // tag = descriptor.Tag; // return tag; // } // set // { // //this.ForSerialize = true; // //this.tag = value; // //IDescriptor descriptor = SetDescriptor(this); // //tag = descriptor.Tag; // //this.ForSerialize = false; // } //} #endregion public void Serialize(BinaryWriter writer) { CountCompression.Serialize(writer, (ulong)ID); writer.Write(Name); CountCompression.Serialize(writer, (ulong)StructureType); KeyDataType.Serialize(writer); RecordDataType.Serialize(writer); CountCompression.Serialize(writer, (ulong)CreateTime.Ticks); CountCompression.Serialize(writer, (ulong)ModifiedTime.Ticks); CountCompression.Serialize(writer, (ulong)AccessTime.Ticks); if (Tag == null) { CountCompression.Serialize(writer, 0); } else { CountCompression.Serialize(writer, (ulong)Tag.Length + 1); writer.Write(Tag); } }
private void InternalSerialize(BinaryWriter writer) { lock (SyncRoot) { writer.Write(VERSION); writer.Write(ID); if (ID == Locator.MIN.ID) { return; } writer.Write(IsDeleted); writer.Write(Name); writer.Write(checked ((byte)StructureType)); //data types KeyDataType.Serialize(writer); RecordDataType.Serialize(writer); //types if (!DataTypeUtils.IsAnonymousType(KeyType)) { writer.Write(KeyType.FullName); } else { writer.Write(""); } if (!DataTypeUtils.IsAnonymousType(RecordType)) { writer.Write(RecordType.FullName); } else { writer.Write(""); } //key & record members WriteMembers(writer, keyMembers); WriteMembers(writer, recordMembers); //times writer.Write(CreateTime.Ticks); writer.Write(ModifiedTime.Ticks); writer.Write(AccessTime.Ticks); //tag if (Tag == null) { writer.Write(false); } else { writer.Write(true); CountCompression.Serialize(writer, (ulong)Tag.Length); writer.Write(Tag); } } }