我们需要将一些字符串格式的数据移动到枚举中,并且由于现有数据与我们希望枚举的外观不符,我正在使用自定义序列化器(在 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 的类时,我都会收到上述异常。
最佳答案
答案非常直接:我们得到这个异常的原因仅仅是因为我们返回 MyEnum.Unknown 而没有实际读取值。解决方法是:
if (context.Reader.CurrentBsonType == MongoDB.Bson.BsonType.Null) {
context.Reader.ReadNull();
return MyEnum.Unknown;
}
希望这对某人有所帮助。
关于c# - ReadBsonType 只能在 State 为 Type 时调用,不能在 State 为 Value 时调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43503478/
相关文章:
node.js - 我可以在 MongoDB 的聚合查询中申请 forEach 吗?
javascript - 为已登录的用户手动创建 Passport session
mongodb - Meteor 1.4.1.1 上副本集的正确 MONGO_URL 设置是什么
mongodb - 使用键值对将 mongo 数组转换为对象
json - 使用 Python 从 MongoDB 文档创建 JSON 文件
node.js - Mongoose 类型错误 : User is not a constructo
node.js - Node/Express - 保护客户端/服务器之间通信的好方法