/// <summary> /// Write out all of the fields for the current packet /// </summary> /// <param name="definition">The definition that was used to persist the packet.</param> /// <param name="packet">The serialized packet to populate with data</param> void IPacket.WriteFields(PacketDefinition definition, SerializedPacket packet) { if (m_BasePacket != null) { ((IPacket)m_BasePacket).WriteFields(definition, packet); } for (int index = 0; index < m_Definition.Fields.Count; index++) { FieldDefinition fieldDefinition = m_Definition.Fields[index]; switch (fieldDefinition.FieldType) { case FieldType.Bool: packet.SetField(fieldDefinition.Name, (bool)m_FieldValues[index]); break; case FieldType.BoolArray: packet.SetField(fieldDefinition.Name, (bool[])m_FieldValues[index]); break; case FieldType.String: packet.SetField(fieldDefinition.Name, (string)m_FieldValues[index]); break; case FieldType.StringArray: packet.SetField(fieldDefinition.Name, (string[])m_FieldValues[index]); break; case FieldType.Int32: packet.SetField(fieldDefinition.Name, (Int32)m_FieldValues[index]); break; case FieldType.Int32Array: packet.SetField(fieldDefinition.Name, (Int32[])m_FieldValues[index]); break; case FieldType.Int64: packet.SetField(fieldDefinition.Name, (Int64)m_FieldValues[index]); break; case FieldType.Int64Array: packet.SetField(fieldDefinition.Name, (Int64[])m_FieldValues[index]); break; case FieldType.UInt32: packet.SetField(fieldDefinition.Name, (UInt32)m_FieldValues[index]); break; case FieldType.UInt32Array: packet.SetField(fieldDefinition.Name, (UInt32[])m_FieldValues[index]); break; case FieldType.UInt64: packet.SetField(fieldDefinition.Name, (UInt64)m_FieldValues[index]); break; case FieldType.UInt64Array: packet.SetField(fieldDefinition.Name, (UInt64[])m_FieldValues[index]); break; case FieldType.Double: packet.SetField(fieldDefinition.Name, (double)m_FieldValues[index]); break; case FieldType.DoubleArray: packet.SetField(fieldDefinition.Name, (double[])m_FieldValues[index]); break; case FieldType.TimeSpan: packet.SetField(fieldDefinition.Name, (TimeSpan)m_FieldValues[index]); break; case FieldType.TimeSpanArray: packet.SetField(fieldDefinition.Name, (TimeSpan[])m_FieldValues[index]); break; case FieldType.DateTime: packet.SetField(fieldDefinition.Name, (DateTime)m_FieldValues[index]); break; case FieldType.DateTimeArray: packet.SetField(fieldDefinition.Name, (DateTime[])m_FieldValues[index]); break; case FieldType.Guid: packet.SetField(fieldDefinition.Name, (Guid)m_FieldValues[index]); break; case FieldType.GuidArray: packet.SetField(fieldDefinition.Name, (Guid[])m_FieldValues[index]); break; case FieldType.DateTimeOffset: packet.SetField(fieldDefinition.Name, (DateTimeOffset)m_FieldValues[index]); break; case FieldType.DateTimeOffsetArray: packet.SetField(fieldDefinition.Name, (DateTimeOffset[])m_FieldValues[index]); break; default: #if DEBUG if (Debugger.IsAttached) { Debugger.Break(); } #endif throw new InvalidOperationException(string.Format("The field type {0} is unknown so we can't serialize the packet ", definition.Fields[index].FieldType)); } } }