我们需要将字符串格式的一些数据移动到枚举中,因为现有数据与我们想要的enum看起来不一致,所以我使用的是自定义Serializer(在MongoDB中)。
我的代码看起来像这样:
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的类时,我都会得到上述异常。
答案 0 :(得分:6)
答案很简单:我们之所以得到这个异常,只是因为我们在没有实际读取值的情况下返回MyEnum.Unknown。修复就是:
if (context.Reader.CurrentBsonType == MongoDB.Bson.BsonType.Null) {
context.Reader.ReadNull();
return MyEnum.Unknown;
}
希望这有助于某人。