复杂的消息和Masstransit反序列化

Joa*_*opf 4 .net clr ilmerge masstransit json.net

我在MT中发布了一条消息,它有几个Object类型的属性,因为我不知道编译时的类型.当我在消费者中收到消息时,我看到,使用Newtonsoft JObject-instances填充了Object类型的属性.JObject-Class驻留在Masstransit.dll中的ILMerged Newtonsoft.Json-assembly中.此程序集中的JObject-Class标记为内部.每当我尝试将属性值转换为由Newtonsoft.Json的Nuget-Assembly提供的JObject时,它就会失败.

所以我的问题是:

  • 将属性值强制转换为JObject的正确方法是什么?
  • 为什么演员会失败?这意味着,clr在这里面临的困难是什么?
  • 我可以在我的消费者中获得原始的,未序列化的消息体吗?

谢谢.

Tra*_*vis 5

如果要在任何消息协定上进行运行时键入,则不能使用JSON序列化.如果要执行此操作,则需要使用二进制序列化程序.

您无法访问原始的,未序列化的消息体; 如果无法反序列化消息,则不会调用任何用户代码.

任何标记为internal的类型都不允许我们反序列化消息.无法调用构造函数,因此无法创建对象.我不确定二进制序列化器是否允许你绕过这个限制,而不是我测试过的东西.

如果您还有其他问题,欢迎您加入邮件列表,https://groups.google.com/forum/#!forum/masstransit-discuss.

  • 请提交一个问题(或者更好的拉取请求)以使它们正确装饰,以便二进制序列化工作. (2认同)