void IBsonSerializer.Serialize(BsonSerializationContext context, BsonSerializationArgs args, object value) { Serialize(context, args, (TClass)value); }
/// <summary> /// Serializes a value. /// </summary> /// <param name="context">The serialization context.</param> /// <param name="args">The serialization args.</param> /// <param name="value">The object.</param> protected override void SerializeValue(BsonSerializationContext context, BsonSerializationArgs args, BsonBoolean value) { var bsonWriter = context.Writer; bsonWriter.WriteBoolean(value.Value); }
public override void Serialize(BsonSerializationContext context, BsonSerializationArgs args, Dictionary value) { BsonDocumentSerializer.Instance.Serialize(context, args, value.ToBsonDocument()); }
/// <summary>Null value is handled via [BsonIgnoreIfNull] attribute and is not expected here.</summary> public override void Serialize(BsonSerializationContext context, BsonSerializationArgs args, IsoDayOfWeek value) { // Extension method AsString() uses three-letter format context.Writer.WriteString(value.AsString()); }
public override void Serialize(BsonSerializationContext context, BsonSerializationArgs args, decimal value) { context.Writer.WriteDouble((double)value); }
/// <summary> /// Serializes a value. /// </summary> /// <param name="context">The serialization context.</param> /// <param name="args">The serialization args.</param> /// <param name="value">The object.</param> protected override void SerializeValue(BsonSerializationContext context, BsonSerializationArgs args, RawBsonArray value) { var bsonWriter = context.Writer; bsonWriter.WriteRawBsonArray(value.Slice); }
public override void Serialize(BsonSerializationContext context, BsonSerializationArgs args, CollectionOptionsWrapper value) { value.SerializeWrappedObject(context); }
/// <summary> /// Serializes a value. /// </summary> /// <param name="context">The serialization context.</param> /// <param name="args">The serialization args.</param> /// <param name="value">The value.</param> protected override void SerializeValue(BsonSerializationContext context, BsonSerializationArgs args, GeoJsonPolygon <TCoordinates> value) { _helper.SerializeMembers(context, value, SerializeDerivedMembers); }
/// <summary> /// Serializes a value. /// </summary> /// <param name="context">The serialization context.</param> /// <param name="args">The serialization args.</param> /// <param name="value">The object.</param> protected abstract void SerializeValue(BsonSerializationContext context, BsonSerializationArgs args, TBsonValue value);
public override void Serialize(BsonSerializationContext context, BsonSerializationArgs args, TValue value) { var writerAdapter = new BsonWriterAdapter(context.Writer); _wrappedSerializer.Serialize(writerAdapter, value, args.NominalType); }
/// <summary> /// Serializes a value. /// </summary> /// <param name="context">The serialization context.</param> /// <param name="args">The serialization args.</param> /// <param name="value">The object.</param> protected override void SerializeValue(BsonSerializationContext context, BsonSerializationArgs args, BsonRegularExpression value) { var bsonWriter = context.Writer; bsonWriter.WriteRegularExpression(value); }
public override void Serialize(BsonSerializationContext context, BsonSerializationArgs args, TDerivedDocument value) { args.NominalType = typeof(TRootDocument); _derivedDocumentSerializer.Serialize(context, args, value); }
/// <summary>Serializes a value.</summary> /// <param name="context">The serialization context.</param> /// <param name="args">The serialization args.</param> /// <param name="value">The value.</param> public void Serialize(BsonSerializationContext context, BsonSerializationArgs args, object value) { BsonSerializer.Serialize(context.Writer, JsonConvert.SerializeObject(value), args: args); }
/// <summary> /// Serializes a value. /// </summary> /// <param name="context">The serialization context.</param> /// <param name="args">The serialization args.</param> /// <param name="value">The object.</param> public override void Serialize(BsonSerializationContext context, BsonSerializationArgs args, DateTime value) { var bsonWriter = context.Writer; DateTime utcDateTime; if (_dateOnly) { if (value.TimeOfDay != TimeSpan.Zero) { throw new BsonSerializationException("TimeOfDay component is not zero."); } utcDateTime = DateTime.SpecifyKind(value, DateTimeKind.Utc); // not ToLocalTime } else { utcDateTime = BsonUtils.ToUniversalTime(value); } var millisecondsSinceEpoch = BsonUtils.ToMillisecondsSinceEpoch(utcDateTime); switch (_representation) { case BsonType.DateTime: bsonWriter.WriteDateTime(millisecondsSinceEpoch); break; case BsonType.Document: bsonWriter.WriteStartDocument(); bsonWriter.WriteDateTime("DateTime", millisecondsSinceEpoch); bsonWriter.WriteInt64("Ticks", utcDateTime.Ticks); bsonWriter.WriteEndDocument(); break; case BsonType.Int64: bsonWriter.WriteInt64(utcDateTime.Ticks); break; case BsonType.String: if (_dateOnly) { bsonWriter.WriteString(value.ToString("yyyy-MM-dd")); } else { if (value == DateTime.MinValue || value == DateTime.MaxValue) { // serialize MinValue and MaxValue as Unspecified so we do NOT get the time zone offset value = DateTime.SpecifyKind(value, DateTimeKind.Unspecified); } else if (value.Kind == DateTimeKind.Unspecified) { // serialize Unspecified as Local se we get the time zone offset value = DateTime.SpecifyKind(value, DateTimeKind.Local); } bsonWriter.WriteString(JsonConvert.ToString(value)); } break; default: var message = string.Format("'{0}' is not a valid DateTime representation.", _representation); throw new BsonSerializationException(message); } }
public override void Serialize(BsonSerializationContext context, BsonSerializationArgs args, Signature value) => context.Writer.WriteString(value?.ToString() ?? string.Empty);
/// <summary> /// Serializes a value. /// </summary> /// <param name="context">The serialization context.</param> /// <param name="args">The serialization args.</param> /// <param name="value">The object.</param> protected override void SerializeValue(BsonSerializationContext context, BsonSerializationArgs args, BsonDateTime value) { var bsonWriter = context.Writer; bsonWriter.WriteDateTime(value.MillisecondsSinceEpoch); }
public override void Serialize(BsonSerializationContext context, BsonSerializationArgs args, Guid value) => context.Writer.WriteString(value.ToString());
public override void Serialize(BsonSerializationContext context, BsonSerializationArgs args, GeoHaystackSearchOptionsBuilder value) { BsonDocumentSerializer.Instance.Serialize(context, value._document); }
/// <summary> /// Serializes a value of type {TValue}. /// </summary> /// <param name="context">The serialization context.</param> /// <param name="args">The serialization args.</param> /// <param name="value">The value.</param> protected virtual void SerializeValue(BsonSerializationContext context, BsonSerializationArgs args, TValue value) { throw CreateCannotBeSerializedException(); }
public override void Serialize(BsonSerializationContext context, BsonSerializationArgs args, SeatType value) { context.Writer.WriteInt32((int)value.Type); }
public override void Serialize(BsonSerializationContext context, BsonSerializationArgs args, Id id) { UpdateIdIfNone(id); context.Writer.WriteObjectId(new ObjectId(id.StringId)); }
public override void Serialize(BsonSerializationContext context, BsonSerializationArgs args, GeoNearResult <TDocument> value) { _serializer.Serialize(context, value); }
/// <summary> /// Serializes a value. /// </summary> /// <param name="context">The serialization context.</param> /// <param name="args">The serialization args.</param> /// <param name="value">The object.</param> public override void Serialize(BsonSerializationContext context, BsonSerializationArgs args, object value) { var bsonWriter = context.Writer; if (value == null) { bsonWriter.WriteNull(); } else { var actualType = value.GetType(); if (actualType == typeof(object)) { bsonWriter.WriteStartDocument(); bsonWriter.WriteEndDocument(); } else { // certain types can be written directly as BSON value // if we're not at the top level document, or if we're using the JsonWriter if (bsonWriter.State == BsonWriterState.Value || bsonWriter is JsonWriter) { switch (Type.GetTypeCode(actualType)) { case TypeCode.Boolean: bsonWriter.WriteBoolean((bool)value); return; case TypeCode.DateTime: // TODO: is this right? will lose precision after round trip var bsonDateTime = new BsonDateTime(BsonUtils.ToUniversalTime((DateTime)value)); bsonWriter.WriteDateTime(bsonDateTime.MillisecondsSinceEpoch); return; case TypeCode.Double: bsonWriter.WriteDouble((double)value); return; case TypeCode.Int16: // TODO: is this right? will change type to Int32 after round trip bsonWriter.WriteInt32((short)value); return; case TypeCode.Int32: bsonWriter.WriteInt32((int)value); return; case TypeCode.Int64: bsonWriter.WriteInt64((long)value); return; case TypeCode.Object: if (actualType == typeof(Guid)) { var guid = (Guid)value; var guidRepresentation = bsonWriter.Settings.GuidRepresentation; var binaryData = new BsonBinaryData(guid, guidRepresentation); bsonWriter.WriteBinaryData(binaryData); return; } if (actualType == typeof(ObjectId)) { bsonWriter.WriteObjectId((ObjectId)value); return; } break; case TypeCode.String: bsonWriter.WriteString((string)value); return; } } SerializeDiscriminatedValue(context, args, value, actualType); } } }
public override void Serialize(BsonSerializationContext context, BsonSerializationArgs args, DateTime value) { var bsonWriter = context.Writer; bsonWriter.WriteString(value.ToString("yyyy-MM-dd", DateTimeFormatInfo.InvariantInfo)); }
public override void Serialize(BsonSerializationContext context, BsonSerializationArgs args, GroupByBuilder value) { BsonDocumentSerializer.Instance.Serialize(context, value._document); }
public override void Serialize(BsonSerializationContext context, BsonSerializationArgs args, Instant value) { context.Writer.WriteDateTime(value.Ticks / NodaConstants.TicksPerMillisecond); }
public override void Serialize(BsonSerializationContext context, BsonSerializationArgs args, Collection value) { BsonArraySerializer.Instance.Serialize(context, args, value.ToBsonArray()); }
public void Serialize(BsonSerializationContext context, BsonSerializationArgs args, ICollection <TEntity> value) { Serialize(context, args, (object)value); }
public override void Serialize(BsonSerializationContext context, BsonSerializationArgs args, IndexKeysWrapper value) { value.SerializeWrappedObject(context); }
void IBsonSerializer <TClass> .Serialize(BsonSerializationContext context, BsonSerializationArgs args, TClass value) { Serialize(context, args, value); }