0

我有这门课

public class TestClass
{
     public DateTime date;
     public ObjectId _id;
     public GeoJsonGeometry<GeoJson2DCoordinates> loc;
}

当我将数据插入 MongoDB 时,它工作得很好!当我读取数据时,我得到一个异常说子类 TestClass.loc 不能被反序列化。

如果我在不检索 loc 属性的情况下执行 find 语句,则代码有效。

我该如何反序列化子类?

谢谢!

4

2 回答 2

0

GeoJsonGeometry是一个抽象类。您不能实例化抽象类(并且反序列化器不知道序列化的原始类型,因为它没有存储在 BSON 文档中)。

最简单的解决方案是使用更具体的类型,GeoJsonPoint例如。

或者,您可以研究编写此处记录的自定义序列化程序。

于 2013-10-02T13:40:14.703 回答
0

我通过编写自己的序列化程序来修复它。因为我想使用一个抽象类,所以这就是我写的。

public override object Deserialize(BsonReader bsonReader, Type nominalType, Type actualType, IBsonSerializationOptions options)
{
    return new GeoJsonObjectSerializer<T>().Deserialize(bsonReader, nominalType, options):
}
于 2013-10-07T07:43:43.813 回答