private void SerializeType(BsonWriter bsonWriter, GeoJsonObjectType type) { bsonWriter.WriteString("type", type.ToString()); }
private void SerializeType(BsonSerializationContext context, GeoJsonObjectType type) { context.Writer.WriteString("type", type.ToString()); }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { var geom = serializer.Deserialize<JToken>(reader); GeoJsonObjectType type = serializer.Deserialize<GeoJsonObjectType>(geom.SelectToken("type").CreateReader()); var coordReader = geom.SelectToken("coordinates").CreateReader(); switch (type) { case GeoJsonObjectType.MultiPolygon: return new MultiPolygonJsonConverter().ReadJson(coordReader, typeof(MultiPolygon), geom, serializer); case GeoJsonObjectType.Polygon: return new PolygonJsonConverter().ReadJson(coordReader, typeof(MultiPolygon), geom, serializer); case GeoJsonObjectType.MultiLineString: return new MultiLineStringJsonConverter().ReadJson(coordReader, typeof(MultiLineString), geom, serializer); case GeoJsonObjectType.LineString: return new LineStringJsonConverter().ReadJson(coordReader, typeof(LineString), geom, serializer); case GeoJsonObjectType.MultiPoint: return new MultiPointJsonConverter().ReadJson(coordReader, typeof(MultiPoint), geom, serializer); case GeoJsonObjectType.Point: return new PointJsonConverter().ReadJson(coordReader, typeof(Point), geom, serializer); default: throw new InvalidFormatException(string.Format("Not a valid GeoSon geometry type: {0}", type.ToString())); } }