public override void Serialize(BsonWriter bsonWriter, Type nominalType, object value, IBsonSerializationOptions options) { if (value == null) bsonWriter.WriteInt32(0); else bsonWriter.WriteInt32(((ContentItem)value).ID); }
/// <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 lazyBsonArray = (LazyBsonArray)value; var slice = lazyBsonArray.Slice; if (slice == null) { BsonArraySerializer.Instance.Serialize(bsonWriter, typeof(BsonArray), lazyBsonArray, options); } else { using (var clonedSlice = slice.GetSlice(0, slice.Length)) { bsonWriter.WriteRawBsonArray(clonedSlice); } } } }
/// <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) { throw new ArgumentNullException("value"); } var wrapper = (BsonDocumentWrapper)value; if (wrapper.IsUpdateDocument) { var savedCheckElementNames = bsonWriter.CheckElementNames; var savedCheckUpdateDocument = bsonWriter.CheckUpdateDocument; try { bsonWriter.CheckElementNames = false; bsonWriter.CheckUpdateDocument = true; BsonSerializer.Serialize(bsonWriter, wrapper.WrappedNominalType, wrapper.WrappedObject, null); // TODO: wrap options also? } finally { bsonWriter.CheckElementNames = savedCheckElementNames; bsonWriter.CheckUpdateDocument = savedCheckUpdateDocument; } } else { BsonSerializer.Serialize(bsonWriter, wrapper.WrappedNominalType, wrapper.WrappedObject, null); // TODO: wrap options also? } }
public override void Serialize(BsonWriter bsonWriter, Type nominalType, object value, IBsonSerializationOptions options) { if (value == null) { bsonWriter.WriteNull(); return; } var metaObject = ((IDynamicMetaObjectProvider)value).GetMetaObject(Expression.Constant(value)); var memberNames = metaObject.GetDynamicMemberNames().ToList(); if (memberNames.Count == 0) { bsonWriter.WriteNull(); return; } bsonWriter.WriteStartDocument(); foreach (var memberName in memberNames) { bsonWriter.WriteName(memberName); var memberValue = BinderHelper.GetMemberValue(value, memberName); if (memberValue == null) bsonWriter.WriteNull(); else { var memberType = memberValue.GetType(); var serializer = BsonSerializer.LookupSerializer(memberType); serializer.Serialize(bsonWriter, memberType, memberValue, options); } } bsonWriter.WriteEndDocument(); }
public override void Serialize( BsonWriter bsonWriter, Type nominalType, object value, IBsonSerializationOptions options) { var dateTimeOffset = (DateTimeOffset)value; var representationSerializationOptions = EnsureSerializationOptions<RepresentationSerializationOptions>(options); switch (representationSerializationOptions.Representation) { case BsonType.Array: bsonWriter.WriteStartArray(); bsonWriter.WriteInt64(dateTimeOffset.UtcTicks); bsonWriter.WriteInt32((int)dateTimeOffset.Offset.TotalMinutes); bsonWriter.WriteEndArray(); break; case BsonType.Document: bsonWriter.WriteStartDocument(); bsonWriter.WriteDateTime("DateTime", BsonUtils.ToMillisecondsSinceEpoch(dateTimeOffset.UtcDateTime)); bsonWriter.WriteInt64("Ticks", dateTimeOffset.UtcTicks); bsonWriter.WriteInt32("Offset", (int)dateTimeOffset.Offset.TotalMinutes); bsonWriter.WriteEndDocument(); break; default: var message = string.Format("'{0}' is not a valid DateTimeOffset representation.", representationSerializationOptions.Representation); throw new BsonSerializationException(message); } }
public override void Serialize( BsonWriter bsonWriter, Type nominalType, object value, IBsonSerializationOptions options ) { var actualType = value.GetType(); VerifySerializeTypes(nominalType, actualType); var representation = (options == null) ? 0 : ((RepresentationSerializationOptions) options).Representation; switch (representation) { case 0: var underlyingTypeCode = Type.GetTypeCode(Enum.GetUnderlyingType(actualType)); if (underlyingTypeCode == TypeCode.Int64 || underlyingTypeCode == TypeCode.UInt64) { goto case BsonType.Int64; } else { goto case BsonType.Int32; } case BsonType.Int32: bsonWriter.WriteInt32(Convert.ToInt32(value)); break; case BsonType.Int64: bsonWriter.WriteInt64(Convert.ToInt64(value)); break; case BsonType.String: bsonWriter.WriteString(value.ToString()); break; default: throw new BsonInternalException("Unexpected EnumRepresentation"); } }
public virtual void Serialize( BsonWriter bsonWriter, Type nominalType, object value, bool serializeIdFirst ) { throw new InvalidOperationException("Subclass must implement Serialize"); }
public virtual void Serialize( BsonWriter bsonWriter, Type nominalType, object value, IBsonSerializationOptions options ) { throw new InvalidOperationException("Subclass must implement Serialize"); }
public override void Serialize(BsonWriter bsonWriter, Type nominalType, object value, IBsonSerializationOptions options) { var relation = value as ContentRelation; if (relation == null || !relation.ID.HasValue || relation.ID.Value == 0) bsonWriter.WriteInt32(0); else bsonWriter.WriteInt32(relation.ID.Value); }
public override void Serialize( BsonWriter bsonWriter, Type nominalType, object value, bool serializeIdFirst ) { bsonWriter.WriteBoolean((bool) value); }
public override void Serialize( BsonWriter bsonWriter, Type nominalType, object value, IBsonSerializationOptions options ) { var type = (Type)value; bsonWriter.WriteString(type.AssemblyQualifiedName); }
public override void Serialize(BsonWriter bsonWriter, System.Type nominalType, object value, IBsonSerializationOptions options) { var rectangle = (Rectangle) value; bsonWriter.WriteStartDocument(); WriteVector(bsonWriter,"Min",rectangle.Min); WriteVector(bsonWriter,"Max",rectangle.Max); bsonWriter.WriteDouble("Width",rectangle.Width); bsonWriter.WriteDouble("Height",rectangle.Height); bsonWriter.WriteEndDocument(); }
#pragma warning restore 618 public override void Serialize( BsonWriter bsonWriter, Type nominalType, object value, bool serializeIdFirst ) { if (value == null) { bsonWriter.WriteNull(); } else { bsonWriter.WriteBinaryData((byte[]) value, BsonBinarySubType.Binary); } }
/// <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) { throw new ArgumentNullException("value"); } bsonWriter.WriteUndefined(); }
public void Serialize(BsonWriter bsonWriter, Type nominalType, object value, IBsonSerializationOptions options) { var method = (MethodInfo)value; bsonWriter.WriteStartDocument(); bsonWriter.WriteName("Type"); bsonWriter.WriteString(method.DeclaringType.AssemblyQualifiedName); bsonWriter.WriteName("Method"); bsonWriter.WriteString(GetMethodSignature(method)); bsonWriter.WriteEndDocument(); }
/// <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) { throw new ArgumentNullException("value"); } var script = (BsonJavaScript)value; bsonWriter.WriteJavaScript(script.Code); }
public override void Serialize( BsonWriter bsonWriter, Type nominalType, object value, bool serializeIdFirst ) { if (value == null) { bsonWriter.WriteNull(); } else { Type underlyingType = Nullable.GetUnderlyingType(nominalType); BsonSerializer.Serialize(bsonWriter, underlyingType, value, serializeIdFirst); } }
/// <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) { throw new ArgumentNullException("value"); } var symbol = (BsonSymbol)value; bsonWriter.WriteSymbol(symbol.Name); }
/// <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) { throw new ArgumentNullException("value"); } var timestamp = (BsonTimestamp)value; bsonWriter.WriteTimestamp(timestamp.Value); }
/// <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) { throw new ArgumentNullException("value"); } var objectId = ((BsonObjectId)value).Value; bsonWriter.WriteObjectId(objectId); }
public override void Serialize(BsonWriter bsonWriter, Type nominalType, object value, IBsonSerializationOptions options) { // when entry is null, do not throw, just write null if (value == null) { bsonWriter.WriteNull(); return; } if (_failOnSerialize) throw new InvalidOperationException(); bsonWriter.WriteString((string)value); }
/// <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) { throw new ArgumentNullException("value"); } var bsonString = (BsonString)value; bsonWriter.WriteString(bsonString.Value); }
/// <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) { throw new ArgumentNullException("value"); } var regex = (BsonRegularExpression)value; bsonWriter.WriteRegularExpression(regex); }
/// <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) { throw new ArgumentNullException("value"); } var bsonMaxKey = (BsonMaxKey)value; // check type by casting bsonWriter.WriteMaxKey(); }
/// <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) { throw new ArgumentNullException("value"); } var bsonDateTime = (BsonDateTime)value; bsonWriter.WriteDateTime(bsonDateTime.MillisecondsSinceEpoch); }
/// <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) { throw new ArgumentNullException("value"); } var script = (BsonJavaScriptWithScope)value; bsonWriter.WriteJavaScriptWithScope(script.Code); BsonDocumentSerializer.Instance.Serialize(bsonWriter, typeof(BsonDocument), script.Scope, null); }
/// <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 bsonDocumentWrapper = (BsonDocumentWrapper)value; ((IBsonSerializable)bsonDocumentWrapper).Serialize(bsonWriter, nominalType, options); } }
/// <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 bsonValue = (BsonValue)value; bsonValue.WriteTo(bsonWriter); } }
public void Serialize(BsonWriter bsonWriter, Type nominalType, object value, IBsonSerializationOptions options) { bool isOfTypeBase = _baseType.IsAssignableFrom(nominalType); if (isOfTypeBase) { var preSaveOrUpdateEventListeners = _dependencyResolver.GetServices<IPreSaveOrUpdateEventListener>(); if(preSaveOrUpdateEventListeners != null) { foreach (var eventListener in preSaveOrUpdateEventListeners) { if (eventListener == null) { continue; } var eventDataLoader = _dependencyResolver.GetService<IEventDataLoader>(); var eventData = (eventDataLoader != null) ? eventDataLoader.GetData() : null; eventListener.OnPreSave(new DefaultPreSaveOrUpdateEventArgs(value, eventData)); } } } _serializer.Serialize(bsonWriter, nominalType, value, options); if (!isOfTypeBase) { return; } var postSaveOrUpdateEventListeners = _dependencyResolver.GetServices<IPostSaveOrUpdateEventListener>(); if (postSaveOrUpdateEventListeners == null) { return; } foreach (var eventListener in postSaveOrUpdateEventListeners) { if (eventListener == null) { continue; } var eventDataLoader = _dependencyResolver.GetService<IEventDataLoader>(); var eventData = (eventDataLoader != null) ? eventDataLoader.GetData() : null; eventListener.OnPostSave(new DefaultPostSaveOrUpdateEventArgs(value, eventData)); } }
/// <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) { throw new ArgumentNullException("value"); } var binaryData = (BsonBinaryData)value; var subType = binaryData.SubType; if (subType == BsonBinarySubType.UuidStandard || subType == BsonBinarySubType.UuidLegacy) { var writerGuidRepresentation = bsonWriter.Settings.GuidRepresentation; if (writerGuidRepresentation != GuidRepresentation.Unspecified) { var bytes = binaryData.Bytes; var guidRepresentation = binaryData.GuidRepresentation; if (guidRepresentation == GuidRepresentation.Unspecified) { var message = string.Format( "Cannot serialize BsonBinaryData with GuidRepresentation Unspecified to destination with GuidRepresentation {0}.", writerGuidRepresentation); throw new BsonSerializationException(message); } if (guidRepresentation != writerGuidRepresentation) { var guid = GuidConverter.FromBytes(bytes, guidRepresentation); bytes = GuidConverter.ToBytes(guid, writerGuidRepresentation); subType = (writerGuidRepresentation == GuidRepresentation.Standard) ? BsonBinarySubType.UuidStandard : BsonBinarySubType.UuidLegacy; guidRepresentation = writerGuidRepresentation; binaryData = new BsonBinaryData(bytes, subType, guidRepresentation); } } } bsonWriter.WriteBinaryData(binaryData); }