c# - ReadBsonType 只能在 State 为 Type 时调用,不能在 State 为

我们需要将一些字符串格式的数据移动到枚举中,并且由于现有数据与我们希望枚举的外观不符,我正在使用自定义序列化器(在 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 - 查找未邀请任何用户的用户

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 - 保护客户端/服务器之间通信的好方法

java - 如何防止连接池在 mongodb 上使用 java 驱动程序关闭?

node.js - 如何使用 MongoDB 按名字和姓氏搜索用户?