使用二进制序列化程序在NServiceBus中以消息形式发送接口

使用二进制序列化程序在NServiceBus中以消息形式发送接口,nservicebus,binary-serialization,Nservicebus,Binary Serialization,我最近开始使用二进制序列化程序通过NServiceBus发送消息。我的消息都定义为接口,并使用 bus.Send<MessageType>(msg => msg.Property = someValue) 这导致从NServiceBus引发异常,声明 无法创建的实例 接口 我可以从堆栈跟踪中看到正在使用SimpleMessageApper,在查看源代码后,可以看到它正在调用Activator.CreateInstance 我在文档中找不到任何东西表明我不可能做我想做的事情,有

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

bus.Send<MessageType>(msg => msg.Property = someValue)
这导致从NServiceBus引发异常,声明

无法创建的实例 接口

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

我在文档中找不到任何东西表明我不可能做我想做的事情,有没有办法解决这个问题

谢谢,
马特

我才刚开始玩nServiceBus,所以我能给你的只有理论:


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

嗨,迈克,听起来有可能,我假设NServiceBus是在内部创建代理的,因为我没有任何消息的实现类。我只是觉得有点奇怪,它在XmlSerializer中工作得很好,但在Binary中却不行。谢谢,马特