internal static void WriteIEnumerable(this IEnumerable values, BinaryWriter writer) { bool first = true; var position = 0L; var count = 0; BSonTypeEnum type = BSonTypeEnum.BSON_Null; foreach (var item in values) { if (first) { first = false; type = item.GetBSonType(); writer.Write((byte)type); // scrivo il tipo dell'item nell'array position = writer.BaseStream.Position; // salvo la posizione per scrivere la dimenzione dell'array writer.Write((int)0); // scrivo 0 perchè non so quato è grande l'array BSonSerializer.WriteCorrectType(item, writer, type); // scrivo l'item } else { BSonSerializer.WriteCorrectType(item, writer, type); // scrivo l'item } count++; } writer.BaseStream.Position = position; writer.Write(count); writer.BaseStream.Seek(0, SeekOrigin.End); }
public void GetBytes(BinaryWriter writer) { if (Value is BSonDoc) { var doc = Value as BSonDoc; doc.Name = Name; doc.GetBytes(writer); return; } var type = BSonSerializer.GetBSonType(Value); writer.Write((byte)type); writer.Write(Name); BSonSerializer.WriteCorrectType(Value, writer, type); }