public void WriteXml(XmlWriter writer) { writer.WriteStartElement("s"); writer.WriteBase64(BitConverter.GetBytes(this.version), 0, 4); writer.WriteBase64(BitConverter.GetBytes(this.GetFieldCount()), 0, 2); byte[] fieldId = new byte[3]; RequestInfo.BinarySerializationItem[] binarySerializationItems = RequestInfo.BinarySerializationItems; for (int i = 0; i < (int)binarySerializationItems.Length; i++) { RequestInfo.BinarySerializationItem binarySerializationItem = binarySerializationItems[i]; if (binarySerializationItem.ShouldSerialize(this)) { fieldId[0] = (byte)binarySerializationItem.FieldId; byte[] extractor = binarySerializationItem.Extractor(this); if ((int)extractor.Length > 65535) { throw Fx.Exception.AsError(new SerializationException(SRClient.ExceededMessagePropertySizeLimit(binarySerializationItem.FieldId.ToString(), 65535)), null); } fieldId[1] = (byte)((int)extractor.Length & 255); fieldId[2] = (byte)(((int)extractor.Length & 65280) >> 8); writer.WriteBase64(fieldId, 0, 3); writer.WriteBase64(extractor, 0, (int)extractor.Length); } } writer.Flush(); writer.WriteEndElement(); }