public void SerializeProperty(
     BsonWriter bsonWriter,
     object obj,
     BsonPropertyMap propertyMap
 )
 {
     var value = propertyMap.Getter(obj);
     if (value == null) {
         bsonWriter.WriteNull(propertyMap.ElementName);
     } else {
         bsonWriter.WriteDocumentName(propertyMap.ElementName);
         var propertyType = propertyMap.PropertyInfo.PropertyType;
         var serializeDiscriminator = BsonPropertyMap.IsPolymorphicType(propertyType) || obj.GetType() != propertyType;
         BsonSerializer.Serialize(bsonWriter, value, false, serializeDiscriminator);
     }
 }
 public void SerializeProperty(
     BsonWriter bsonWriter,
     object obj,
     BsonPropertyMap propertyMap
 )
 {
     var value = (BsonNull) propertyMap.Getter(obj);
     if (value == null) {
         bsonWriter.WriteDocumentName(propertyMap.ElementName);
         bsonWriter.WriteStartDocument();
         bsonWriter.WriteString("$null", "c#null");
         bsonWriter.WriteEndDocument();
     } else {
         bsonWriter.WriteNull(propertyMap.ElementName);
     }
 }
 public void SerializeProperty(
     BsonWriter bsonWriter,
     object obj,
     BsonPropertyMap propertyMap
 )
 {
     var value = (BsonMinKey) propertyMap.Getter(obj);
     if (value == null) {
         bsonWriter.WriteNull(propertyMap.ElementName);
     } else {
         bsonWriter.WriteMinKey(propertyMap.ElementName);
     }
 }
 public void SerializeProperty(
     BsonWriter bsonWriter,
     object obj,
     BsonPropertyMap propertyMap
 )
 {
     var value = (BsonArray) propertyMap.Getter(obj);
     if (value == null) {
         bsonWriter.WriteNull(propertyMap.ElementName);
     } else {
         bsonWriter.WriteArrayName(propertyMap.ElementName);
         value.WriteTo(bsonWriter);
     }
 }
 public void SerializeProperty(
     BsonWriter bsonWriter,
     object obj,
     BsonPropertyMap propertyMap
 )
 {
     var value = (BsonJavaScriptWithScope) propertyMap.Getter(obj);
     if (value == null) {
         bsonWriter.WriteNull(propertyMap.ElementName);
     } else {
         bsonWriter.WriteJavaScriptWithScope(propertyMap.ElementName, value.Code);
         value.Scope.WriteTo(bsonWriter);
     }
 }
 public void SerializeProperty(
     BsonWriter bsonWriter,
     object obj,
     BsonPropertyMap propertyMap
 )
 {
     var value = (BsonDateTime) propertyMap.Getter(obj);
     if (value == null) {
         bsonWriter.WriteNull(propertyMap.ElementName);
     } else {
         bsonWriter.WriteDateTime(propertyMap.ElementName, value.Value);
     }
 }
 public void SerializeProperty(
     BsonWriter bsonWriter,
     object obj,
     BsonPropertyMap propertyMap
 )
 {
     var value = (BsonBinaryData) propertyMap.Getter(obj);
     if (value == null) {
         bsonWriter.WriteNull(propertyMap.ElementName);
     } else {
         bsonWriter.WriteBinaryData(propertyMap.ElementName, value.Bytes, value.SubType);
     }
 }
 public void SerializeProperty(
     BsonWriter bsonWriter,
     object obj,
     BsonPropertyMap propertyMap
 )
 {
     var value = (BsonValue) propertyMap.Getter(obj);
     if (value == null) {
         bsonWriter.WriteNull(propertyMap.ElementName);
     } else {
         var element = new BsonElement(propertyMap.ElementName, value);
         element.WriteTo(bsonWriter);
     }
 }
 public void SerializeProperty(
     BsonWriter bsonWriter,
     object obj,
     BsonPropertyMap propertyMap
 )
 {
     var value = (BsonRegularExpression) propertyMap.Getter(obj);
     if (value == null) {
         bsonWriter.WriteNull(propertyMap.ElementName);
     } else {
         bsonWriter.WriteRegularExpression(propertyMap.ElementName, value.Pattern, value.Options);
     }
 }
 public void SerializeProperty(
     BsonWriter bsonWriter,
     object obj,
     BsonPropertyMap propertyMap
 )
 {
     var value = (BsonObjectId) propertyMap.Getter(obj);
     if (value == null) {
         bsonWriter.WriteNull(propertyMap.ElementName);
     } else {
         bsonWriter.WriteObjectId(propertyMap.ElementName, value.Timestamp, value.MachinePidIncrement);
     }
 }