使用Rabbitmq.client反序列化包含Mongo.Bson.ObjectId属性实体类时抛异常
2024-08-26 22:41:11
原因分析:
队列中存储的objectId属性是字符串,反序列化字符串转换成objectid类型时报错
解决方法:
1、定义ObjectIdConverter属性类,反序列化时将字符串转换成ObjectId
class ObjectIdConverter : JsonConverter
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
serializer.Serialize(writer, value.ToString());
} /// <summary>
// 反序列化时将字符串转换成ObjectId类型
/// </summary>
/// <param name="reader"></param>
/// <param name="objectType"></param>
/// <param name="existingValue"></param>
/// <param name="serializer"></param>
/// <returns></returns>
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
return new ObjectId(serializer.Deserialize(reader).ToString());
} public override bool CanConvert(Type objectType)
{
return typeof(ObjectId).IsAssignableFrom(objectType);
}
}
2、将该属性类应用到ObjectId属性上
[BsonId]
[JsonConverter(typeof(ObjectIdConverter))]
public ObjectId Id { get; set; }
最新文章
- .NET Core采用的全新配置系统[5]: 聊聊默认支持的各种配置源[内存变量,环境变量和命令行参数]
- Jedis的使用
- 你想的到想不到的 javascript 应用小技巧方法
- WebForms UnobtrusiveValidationMode 需要“jquery”ScriptResourceMapping。请添加一个名为 jquery (区分大小写)的 ScriptResourceMapping。
- ACM_1 大数求和
- 线程7-ThreadLocal
- 线程操作案例--生产者与消费者,Object类对线程的支持
- iOS 应用内跳转到appstore里下载
- NOIP2015-stone(二分答案)
- redis 异常排查
- qwtplot3D安装——终结解决方案(YOUYOU版)
- iOS之UITableView的上拉刷新
- python django 实现验证码的功能
- 介绍CSS的相关知识
- 学生成绩管理系统——C语言实现
- PTA 深入虎穴 (正解)和树的同构
- spring cloud 学习笔记(1)
- git常见用法介绍
- Unity在WPF中的应用
- swift语言混编--语言交互的接口
热门文章
- php连接mysql报错——Fatal error: Call to undefined function mysql_connect() in
- 【LA3487】最小割-经典模型 两种方法
- 【BZOJ2460】【BJOI2011】元素 [线性基]
- 【Foreign】字符串匹配 [KMP]
- 通过监测DLL调用探测Mimikatz
- ZigBee MAC层(下)
- JAVA -- JDK JRE JAR
- 记一次CUDA编程任务
- 【反演复习计划】【bzoj4407】于神之怒加强版
- 【SQL】服务器环境下的SQL