public override void Serialize(BsonWriter bsonWriter, Type nominalType, object value, IBsonSerializationOptions options) { var identity = (Identity)value; var objectId = new ObjectId(identity.ToArray()); BsonType bsonType = options == null ? BsonType.ObjectId : ((RepresentationSerializationOptions)options).Representation; switch (bsonType) { case BsonType.String: bsonWriter.WriteString(objectId.ToString()); break; case BsonType.ObjectId: bsonWriter.WriteObjectId(objectId.Timestamp, objectId.Machine, objectId.Pid, objectId.Increment); break; default: throw new BsonSerializationException(string.Format("'{0}' is not a valid representation for type 'Identity'", bsonType)); } }
public override void Serialize(BsonWriter bsonWriter, Type nominalType, object value, IBsonSerializationOptions options) { var objectId = ObjectId.Parse((string)value); bsonWriter.WriteObjectId(objectId.Timestamp, objectId.Machine, objectId.Pid, objectId.Increment); }
/// <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); }
/// <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 stringValue = (string)value; var representationSerializationOptions = EnsureSerializationOptions<RepresentationSerializationOptions>(options); switch (representationSerializationOptions.Representation) { case BsonType.ObjectId: var id = ObjectId.Parse(stringValue); bsonWriter.WriteObjectId(id.Timestamp, id.Machine, id.Pid, id.Increment); break; case BsonType.String: bsonWriter.WriteString(stringValue); break; case BsonType.Symbol: bsonWriter.WriteSymbol(stringValue); break; default: var message = string.Format("'{0}' is not a valid String representation.", representationSerializationOptions.Representation); throw new BsonSerializationException(message); } } }
/// <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) { var objectId = (ObjectId)value; var representationSerializationOptions = EnsureSerializationOptions<RepresentationSerializationOptions>(options); switch (representationSerializationOptions.Representation) { case BsonType.ObjectId: bsonWriter.WriteObjectId(objectId.Timestamp, objectId.Machine, objectId.Pid, objectId.Increment); break; case BsonType.String: bsonWriter.WriteString(objectId.ToString()); break; default: var message = string.Format("'{0}' is not a valid ObjectId representation.", representationSerializationOptions.Representation); throw new BsonSerializationException(message); } }
public override void Serialize(BsonWriter bsonWriter, Type nominalType, object value, IBsonSerializationOptions options) { bsonWriter.WriteObjectId(ObjectId.Parse((string)value)); }
public override void Serialize( BsonWriter bsonWriter, Type nominalType, object value, bool serializeIdFirst ) { var objectId = (ObjectId) value; bsonWriter.WriteObjectId(objectId.Timestamp, objectId.Machine, objectId.Pid, objectId.Increment); }
/// <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 stringValue = (string)value; var representation = (options == null) ? BsonType.String : ((RepresentationSerializationOptions)options).Representation; switch (representation) { case BsonType.ObjectId: var id = ObjectId.Parse(stringValue); bsonWriter.WriteObjectId(id.Timestamp, id.Machine, id.Pid, id.Increment); break; case BsonType.String: bsonWriter.WriteString(stringValue); break; case BsonType.Symbol: bsonWriter.WriteSymbol(stringValue); break; default: throw new BsonInternalException("Unexpected representation."); } } }
/// <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) { var objectId = (ObjectId)value; var representation = (options == null) ? BsonType.ObjectId : ((RepresentationSerializationOptions)options).Representation; switch (representation) { case BsonType.ObjectId: bsonWriter.WriteObjectId(objectId.Timestamp, objectId.Machine, objectId.Pid, objectId.Increment); break; case BsonType.String: bsonWriter.WriteString(objectId.ToString()); break; default: throw new BsonInternalException("Unexpected representation."); } }
void IBsonSerializable.Serialize( BsonWriter bsonWriter, Type nominalType, IBsonSerializationOptions options ) { bsonWriter.WriteStartDocument(); bsonWriter.WriteString("$ref", collectionName); if (id is ObjectId) { var objectId = (ObjectId) id; bsonWriter.WriteObjectId("$id", objectId.Timestamp, objectId.Machine, objectId.Pid, objectId.Increment); } else if (id is Guid) { var guid = (Guid) id; bsonWriter.WriteBinaryData("$id", guid.ToByteArray(), BsonBinarySubType.Uuid); } else if (id is int) { bsonWriter.WriteInt32("$id", (int) id); } else if (id is long) { bsonWriter.WriteInt64("$id", (long) id); } else if (id is string) { bsonWriter.WriteString("$id", (string) id); } else { var message = string.Format("Unexpected Id type: {0}", id.GetType().FullName); throw new BsonInternalException(message); } if (databaseName != null) { bsonWriter.WriteString("$db", databaseName); } bsonWriter.WriteEndDocument(); }
public override void Serialize( BsonWriter bsonWriter, Type nominalType, object value, bool serializeIdFirst ) { var objectId = (ObjectId) value; switch (representation) { case BsonType.ObjectId: bsonWriter.WriteObjectId(objectId.Timestamp, objectId.Machine, objectId.Pid, objectId.Increment); break; case BsonType.String: bsonWriter.WriteString(objectId.ToString()); break; default: throw new BsonInternalException("Unexpected representation"); } }