public void SerializeProperty(
     BsonWriter bsonWriter,
     object obj,
     BsonPropertyMap propertyMap
 )
 {
     var value = (double) propertyMap.Getter(obj);
     bsonWriter.WriteDouble(propertyMap.ElementName, value);
 }
 public void SerializeProperty(
     BsonWriter bsonWriter,
     object obj,
     BsonPropertyMap propertyMap
 )
 {
     var value = (BsonDouble) propertyMap.Getter(obj);
     if (value == null) {
         bsonWriter.WriteNull(propertyMap.ElementName);
     } else {
         bsonWriter.WriteDouble(propertyMap.ElementName, value.Value);
     }
 }
 public void SerializeProperty(
     BsonWriter bsonWriter,
     object obj,
     BsonPropertyMap propertyMap
 )
 {
     var value = (float) propertyMap.Getter(obj);
     var doubleValue = value == float.MinValue ? double.MinValue : value == float.MaxValue ? double.MaxValue : value;
     if (propertyMap.UseCompactRepresentation) {
         bsonWriter.WriteDouble(propertyMap.ElementName, doubleValue);
     } else {
         bsonWriter.WriteDocumentName(propertyMap.ElementName);
         bsonWriter.WriteStartDocument();
         bsonWriter.WriteString("_t", typeof(float).FullName);
         bsonWriter.WriteDouble("v", doubleValue);
         bsonWriter.WriteEndDocument();
     }
 }