Exemplo n.º 1
0
 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();
 }