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

时间:2010-08-10 15:46:06

标签: nservicebus binary-serialization

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

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

这会导致从NServiceBus抛出异常,说明

  

无法创建的实例   接口

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

我在文档中找不到任何说明我无法做我想做的事情,有没有办法解决这个问题?

谢谢, 马特

1 个答案:

答案 0 :(得分:0)

我刚开始玩nServiceBus,所以我能为你提供的只是理论:)。

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