2017-04-19 55 views
2

我们需要将字符串格式的一些数据移动到枚举中,并且由于现有数据与我们希望enum看起来不一样, m使用自定义序列化器(在MongoDB中)。ReadBsonType只能在状态为Type时调用,而不能在状态为Value时调用

我的代码看起来就像这样:

public override MyEnum Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args) 
{ 
    if (context.Reader.CurrentBsonType == MongoDB.Bson.BsonType.Null) return MyEnum.Unknown; 
    return ParseMyEnum(context.Reader.ReadString()); 
} 

但是,每当我从数据库中获取包含MyEnum一类,我得到上述例外。

回答

2

答案非常简单:我们得到这个异常的原因仅仅是因为我们返回MyEnum.Unknown而没有实际读取值。修复将是:

if (context.Reader.CurrentBsonType == MongoDB.Bson.BsonType.Null) { 
    context.Reader.ReadNull(); 
    return MyEnum.Unknown; 
} 

希望这可以帮助别人。

相关问题