// 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));
        }
コード例 #2
0
        // 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));
        }
コード例 #4
0
        // 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();
            }
        }
コード例 #5
0
        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;
        }
コード例 #6
0
 /// <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;
 }