public void SerializeProperty(
     BsonWriter bsonWriter,
     object obj,
     BsonPropertyMap propertyMap
 )
 {
     var value = (bool) propertyMap.Getter(obj);
     bsonWriter.WriteBoolean(propertyMap.ElementName, value);
 }
 public void DeserializeProperty(
     BsonReader bsonReader,
     object obj,
     BsonPropertyMap propertyMap
 )
 {
     var value = bsonReader.ReadBoolean(propertyMap.ElementName);
     propertyMap.Setter(obj, value);
 }
 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 = 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 DeserializeProperty(
     BsonReader bsonReader,
     object obj,
     BsonPropertyMap propertyMap
 )
 {
     BsonType bsonType = bsonReader.PeekBsonType();
     object value;
     if (bsonType == BsonType.Null) {
         bsonReader.ReadNull(propertyMap.ElementName);
         value = null;
     } else {
         bsonReader.ReadDocumentName(propertyMap.ElementName);
         value = BsonSerializer.Deserialize(bsonReader, propertyMap.PropertyInfo.PropertyType);
     }
     propertyMap.Setter(obj, value);
 }
 public void DeserializeProperty(
     BsonReader bsonReader,
     object obj,
     BsonPropertyMap propertyMap
 )
 {
     var bsonType = bsonReader.PeekBsonType();
     BsonArray value;
     if (bsonType == BsonType.Null) {
         bsonReader.ReadNull(propertyMap.ElementName);
         value = null;
     } else {
         bsonReader.ReadArrayName(propertyMap.ElementName);
         value = BsonArray.ReadFrom(bsonReader);
     }
     propertyMap.Setter(obj, value);
 }
 public void DeserializeProperty(
     BsonReader bsonReader,
     object obj,
     BsonPropertyMap propertyMap
 )
 {
     BsonType bsonType = bsonReader.PeekBsonType();
     byte value;
     if (bsonType == BsonType.Int32) {
         value = (byte) bsonReader.ReadInt32(propertyMap.ElementName);
     } else if (bsonType == BsonType.Document) {
         bsonReader.ReadDocumentName(propertyMap.ElementName);
         bsonReader.ReadStartDocument();
         bsonReader.VerifyString("_t", typeof(byte).FullName);
         value = (byte) bsonReader.ReadInt32("v");
         bsonReader.ReadEndDocument();
     } else {
         throw new FileFormatException("Element is not valid System.Byte");
     }
     propertyMap.Setter(obj, value);
 }
 public void DeserializeProperty(
     BsonReader bsonReader,
     object obj,
     BsonPropertyMap propertyMap
 )
 {
     var bsonType = bsonReader.PeekBsonType();
     BsonInt64 value;
     if (bsonType == BsonType.Null) {
         bsonReader.ReadNull(propertyMap.ElementName);
         value = null;
     } else {
         value = BsonInt64.Create(bsonReader.ReadInt64(propertyMap.ElementName));
     }
     propertyMap.Setter(obj, value);
 }
 public void SerializeProperty(
     BsonWriter bsonWriter,
     object obj,
     BsonPropertyMap propertyMap
 )
 {
     var value = (DateTime) propertyMap.Getter(obj);
     bsonWriter.WriteDateTime(propertyMap.ElementName, value);
 }
 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 DeserializeProperty(
     BsonReader bsonReader,
     object obj,
     BsonPropertyMap propertyMap
 )
 {
     throw new InvalidOperationException("BsonDocumentWrappers cannot be deserialized");
 }
 public void SerializeProperty(
     BsonWriter bsonWriter,
     object obj,
     BsonPropertyMap propertyMap
 )
 {
     var value = (long) propertyMap.Getter(obj);
     bsonWriter.WriteInt64(propertyMap.ElementName, 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 = (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 = (BsonJavaScriptWithScope) propertyMap.Getter(obj);
     if (value == null) {
         bsonWriter.WriteNull(propertyMap.ElementName);
     } else {
         bsonWriter.WriteJavaScriptWithScope(propertyMap.ElementName, value.Code);
         value.Scope.WriteTo(bsonWriter);
     }
 }
 public void DeserializeProperty(
     BsonReader bsonReader,
     object obj,
     BsonPropertyMap propertyMap
 )
 {
     var bsonType = bsonReader.PeekBsonType();
     BsonRegularExpression value;
     if (bsonType == BsonType.Null) {
         bsonReader.ReadNull(propertyMap.ElementName);
         value = null;
     } else {
         string pattern, options;
         bsonReader.ReadRegularExpression(propertyMap.ElementName, out pattern, out options);
         value = new BsonRegularExpression(pattern, options);
     }
     propertyMap.Setter(obj, value);
 }
 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 = (BsonObjectId) propertyMap.Getter(obj);
     if (value == null) {
         bsonWriter.WriteNull(propertyMap.ElementName);
     } else {
         bsonWriter.WriteObjectId(propertyMap.ElementName, value.Timestamp, value.MachinePidIncrement);
     }
 }
 public void DeserializeProperty(
     BsonReader bsonReader,
     object obj,
     BsonPropertyMap propertyMap
 )
 {
     byte[] bytes;
     BsonBinarySubType subType;
     bsonReader.ReadBinaryData(propertyMap.ElementName, out bytes, out subType);
     if (bytes.Length != 16) {
         throw new FileFormatException("BinaryData length is not 16");
     }
     if (subType != BsonBinarySubType.Uuid) {
         throw new FileFormatException("BinaryData sub type is not Uuid");
     }
     var value = new Guid(bytes);
     propertyMap.Setter(obj, value);
 }
 public void SerializeProperty(
     BsonWriter bsonWriter,
     object obj,
     BsonPropertyMap propertyMap
 )
 {
     var value = (Guid) propertyMap.Getter(obj);
     bsonWriter.WriteBinaryData(propertyMap.ElementName, value.ToByteArray(), BsonBinarySubType.Uuid);
 }
 public void DeserializeProperty(
     BsonReader bsonReader,
     object obj,
     BsonPropertyMap propertyMap
 )
 {
     var bsonType = bsonReader.PeekBsonType();
     BsonJavaScript value;
     if (bsonType == BsonType.Null) {
         bsonReader.ReadNull(propertyMap.ElementName);
         value = null;
     } else {
         value = new BsonJavaScript(bsonReader.ReadJavaScript(propertyMap.ElementName));
     }
     propertyMap.Setter(obj, value);
 }
 public void SerializeProperty(
     BsonWriter bsonWriter,
     object obj,
     BsonPropertyMap propertyMap
 )
 {
     var value = (ulong) propertyMap.Getter(obj);
     if (propertyMap.UseCompactRepresentation) {
         bsonWriter.WriteInt64(propertyMap.ElementName, (long) value);
     } else {
         bsonWriter.WriteDocumentName(propertyMap.ElementName);
         bsonWriter.WriteStartDocument();
         bsonWriter.WriteString("_t", typeof(ulong).FullName);
         bsonWriter.WriteInt64("v", (long) value);
         bsonWriter.WriteEndDocument();
     }
 }
 public void DeserializeProperty(
     BsonReader bsonReader,
     object obj,
     BsonPropertyMap propertyMap
 )
 {
     var bsonType = bsonReader.PeekBsonType();
     BsonJavaScriptWithScope value;
     if (bsonType == BsonType.Null) {
         bsonReader.ReadNull(propertyMap.ElementName);
         value = null;
     } else {
         var code = bsonReader.ReadJavaScriptWithScope(propertyMap.ElementName);
         var scope = BsonDocument.ReadFrom(bsonReader);
         value = new BsonJavaScriptWithScope(code, scope);
     }
     propertyMap.Setter(obj, value);
 }
 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 DeserializeProperty(
     BsonReader bsonReader,
     object obj,
     BsonPropertyMap propertyMap
 )
 {
     int timestamp;
     long machinePidIncrement;
     bsonReader.ReadObjectId(propertyMap.ElementName, out timestamp, out machinePidIncrement);
     var value = new ObjectId(timestamp, machinePidIncrement);
     propertyMap.Setter(obj, value);
 }
 public void DeserializeProperty(
     BsonReader bsonReader,
     object obj,
     BsonPropertyMap propertyMap
 )
 {
     var bsonType = bsonReader.PeekBsonType();
     BsonNull value;
     if (bsonType == BsonType.Document) {
         bsonReader.ReadDocumentName(propertyMap.ElementName);
         bsonReader.ReadStartDocument();
         bsonReader.VerifyString("$null", "c#null");
         bsonReader.ReadEndDocument();
         value = null;
     } else {
         bsonReader.ReadNull(propertyMap.ElementName);
         value = Bson.Null;
     }
     propertyMap.Setter(obj, value);
 }
 public void DeserializeProperty(
     BsonReader bsonReader,
     object obj,
     BsonPropertyMap propertyMap
 )
 {
     var bsonType = bsonReader.PeekBsonType();
     BsonBinaryData value;
     if (bsonType == BsonType.Null) {
         bsonReader.ReadNull(propertyMap.ElementName);
         value = null;
     } else {
         byte[] bytes;
         BsonBinarySubType subType;
         bsonReader.ReadBinaryData(propertyMap.ElementName, out bytes, out subType);
         value = new BsonBinaryData(bytes, subType);
     }
     propertyMap.Setter(obj, value);
 }
 public void DeserializeProperty(
     BsonReader bsonReader,
     object obj,
     BsonPropertyMap propertyMap
 )
 {
     var bsonType = bsonReader.PeekBsonType();
     BsonObjectId value;
     if (bsonType == BsonType.Null) {
         bsonReader.ReadNull(propertyMap.ElementName);
         value = null;
     } else {
         int timestamp;
         long machinePidIncrement;
         bsonReader.ReadObjectId(propertyMap.ElementName, out timestamp, out machinePidIncrement);
         value = new BsonObjectId(timestamp, machinePidIncrement);
     }
     propertyMap.Setter(obj, value);
 }
 public void DeserializeProperty(
     BsonReader bsonReader,
     object obj,
     BsonPropertyMap propertyMap
 )
 {
     var bsonType = bsonReader.PeekBsonType();
     BsonValue value;
     if (bsonType == BsonType.Null) {
         bsonReader.ReadNull(propertyMap.ElementName);
         value = null;
     } else {
         BsonElement element = BsonElement.ReadFrom(bsonReader, propertyMap.ElementName);
         value = element.Value;
     }
     propertyMap.Setter(obj, value);
 }