使用二进制序列化器在 NServiceBus 中将接口作为消息发送

问题描述 投票:0回答:1

我最近开始使用二进制序列化器通过 NServiceBus 发送消息。我的消息都定义为接口并使用

进行实例化
bus.Send<MessageType>(msg => msg.Property = someValue)

这会导致 NServiceBus 抛出异常,指出

无法创建实例 接口

我可以从堆栈跟踪中看到 SimpleMessageMapper 正在被使用,并且在查看源代码后可以看到它正在调用 Activator.CreateInstance。

我在文档中找不到任何内容表明无法执行我想要执行的操作,有办法解决此问题吗?

谢谢, 马特

nservicebus binary-serialization
1个回答
0
投票

您是为消息接口定义实现类,还是nServiceBus自己生成类?如果是前者,请确保您仍然有默认构造函数,并且类和所有字段/事件都标记为 [Serialized] 或 [NonSerialized]。如果是后者,nServiceBus 可能不知道如何生成序列化(反)序列化所需的成员。您可能需要自己编写并映射实现类。

© www.soinside.com 2019 - 2024. All rights reserved.