2013-10-02 37 views
0

我有這個類無法反序列化的子類中查找聲明MongoDB中

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

當我將數據插入到MongoDB的,它完美的作品! 當我讀取數據時,我收到一個異常,表示子類TestClass.loc無法反序列化。

如果我執行find語句而不檢索loc屬性,代碼就可以工作。

我該如何反序列化子類?

謝謝!

回答

0

我通過編寫我自己的序列化程序來修復它。既然我想和抽象類一起工作,這就是我寫的。

public override object Deserialize(BsonReader bsonReader, Type nominalType, Type actualType, IBsonSerializationOptions options) 
{ 
    return new GeoJsonObjectSerializer<T>().Deserialize(bsonReader, nominalType, options): 
} 
0

GeoJsonGeometry是一個抽象類。你不能實例化一個抽象類(並且反序列化器不知道原始類型是序列化的,因爲它沒有存儲在BSON文檔中)。

最簡單的解決方案是使用更具體的類型,例如GeoJsonPoint

或者,您可以研究編寫一個自定義序列化程序,如文檔here所述。