MongoDB.Bson.IO.BsonWriter.WriteRawBsonArray C# (CSharp) Method

WriteRawBsonArray() public method

Writes a raw BSON array.
public WriteRawBsonArray ( IByteBuffer slice ) : void
slice IByteBuffer The byte buffer containing the raw BSON array.
return void
        public virtual void WriteRawBsonArray(IByteBuffer slice)
        {
            // overridden in BsonBinaryWriter

            using (var bsonBuffer = new BsonBuffer())
            {
                BsonArray array;

                // wrap the array in a fake document so we can deserialize it
                var arrayLength = slice.Length;
                var documentLength = arrayLength + 8;
                bsonBuffer.WriteInt32(documentLength);
                bsonBuffer.WriteByte((byte)BsonType.Array);
                bsonBuffer.WriteByte((byte)'x');
                bsonBuffer.WriteByte((byte)0);
                bsonBuffer.ByteBuffer.WriteBytes(slice);
                bsonBuffer.WriteByte((byte)0);

                bsonBuffer.Position = 0;
                using (var bsonReader = new BsonBinaryReader(bsonBuffer, true, BsonBinaryReaderSettings.Defaults))
                {
                    bsonReader.ReadStartDocument();
                    bsonReader.ReadName("x");
                    array = (BsonArray)BsonArraySerializer.Instance.Deserialize(bsonReader, typeof(BsonArray), null);
                    bsonReader.ReadEndDocument();
                }

                BsonArraySerializer.Instance.Serialize(this, typeof(BsonArray), array, null);
            }
        }

Same methods

BsonWriter::WriteRawBsonArray ( string name, IByteBuffer slice ) : void

Usage Example

 /// <summary>
 /// Serializes an object to a BsonWriter.
 /// </summary>
 /// <param name="bsonWriter">The BsonWriter.</param>
 /// <param name="nominalType">The nominal type.</param>
 /// <param name="value">The object.</param>
 /// <param name="options">The serialization options.</param>
 public override void Serialize(
     BsonWriter bsonWriter,
     Type nominalType,
     object value,
     IBsonSerializationOptions options)
 {
     if (value == null)
     {
         bsonWriter.WriteNull();
     }
     else
     {
         var rawBsonArray = (RawBsonArray)value;
         var slice = rawBsonArray.Slice;
         using (var clonedSlice = slice.GetSlice(0, slice.Length))
         {
             bsonWriter.WriteRawBsonArray(clonedSlice);
         }
     }
 }
All Usage Examples Of MongoDB.Bson.IO.BsonWriter::WriteRawBsonArray