// protected methods /// <summary> /// Deserializes a value. /// </summary> /// <param name="context">The deserialization context.</param> /// <param name="args">The deserialization args.</param> /// <returns>The value.</returns> protected override GeoJsonGeometryCollection <TCoordinates> DeserializeValue(BsonDeserializationContext context, BsonDeserializationArgs args) { var geoJsonObjectArgs = new GeoJsonObjectArgs <TCoordinates>(); List <GeoJsonGeometry <TCoordinates> > geometries = null; _helper.DeserializeMembers(context, (elementName, flag) => { switch (flag) { case Flags.Geometries: geometries = DeserializeGeometries(context); break; default: _helper.DeserializeBaseMember(context, elementName, flag, geoJsonObjectArgs); break; } }); return(new GeoJsonGeometryCollection <TCoordinates>(geoJsonObjectArgs, geometries)); }
// protected methods /// <summary> /// Deserializes a value. /// </summary> /// <param name="context">The deserialization context.</param> /// <param name="args">The deserialization args.</param> /// <returns>The value.</returns> protected override GeoJsonMultiPoint <TCoordinates> DeserializeValue(BsonDeserializationContext context, BsonDeserializationArgs args) { var geoJsonObjectArgs = new GeoJsonObjectArgs <TCoordinates>(); GeoJsonMultiPointCoordinates <TCoordinates> coordinates = null; _helper.DeserializeMembers(context, (elementName, flag) => { switch (flag) { case Flags.Coordinates: coordinates = DeserializeCoordinates(context); break; default: _helper.DeserializeBaseMember(context, elementName, flag, geoJsonObjectArgs); break; } }); return(new GeoJsonMultiPoint <TCoordinates>(geoJsonObjectArgs, coordinates)); }
// protected methods /// <summary> /// Deserializes a value. /// </summary> /// <param name="context">The deserialization context.</param> /// <returns>The value.</returns> protected override GeoJsonFeatureCollection <TCoordinates> DeserializeValue(BsonDeserializationContext context) { var args = new GeoJsonObjectArgs <TCoordinates>(); List <GeoJsonFeature <TCoordinates> > features = null; _helper.DeserializeMembers(context, (elementName, flag) => { switch (flag) { case Flags.Features: features = DeserializeFeatures(context); break; default: _helper.DeserializeBaseMember(context, elementName, flag, args); break; } }); return(new GeoJsonFeatureCollection <TCoordinates>(args, features)); }
// public methods /// <summary> /// Deserializes a base member. /// </summary> /// <param name="context">The context.</param> /// <param name="elementName">The element name.</param> /// <param name="flag">The flag.</param> /// <param name="args">The arguments.</param> public void DeserializeBaseMember(BsonDeserializationContext context, string elementName, long flag, GeoJsonObjectArgs <TCoordinates> args) { switch (flag) { case Flags.Type: EnsureTypeIsValid(context); break; case Flags.CoordinateReferenceSystem: args.CoordinateReferenceSystem = DeserializeCoordinateReferenceSystem(context); break; case Flags.BoundingBox: args.BoundingBox = DeserializeBoundingBox(context); break; case Flags.ExtraMember: DeserializeExtraMember(context, elementName, args); break; default: throw new BsonInternalException(); } }
private void DeserializeExtraMember(BsonDeserializationContext context, string elementName, GeoJsonObjectArgs <TCoordinates> args) { var value = BsonValueSerializer.Instance.Deserialize(context); if (args.ExtraMembers == null) { args.ExtraMembers = new BsonDocument(); } args.ExtraMembers[elementName] = value; }
/// <summary> /// Initializes a new instance of the <see cref="ObjectData"/> class. /// </summary> /// <param name="args">The args.</param> /// <param name="expectedType">The expected type.</param> public ObjectData(GeoJsonObjectArgs <TCoordinates> args, string expectedType) { _args = args; _expectedType = expectedType; }