我最近开始使用二进制序列化器来发送带有NServiceBus的消息。我的消息都被定义为接口,并使用
进行实例化bus.Send<MessageType>(msg => msg.Property = someValue)
这会导致从NServiceBus抛出异常,说明
无法创建的实例 接口
我可以从堆栈跟踪中看到正在使用SimpleMessageMapper,在查看源代码后可以看到它正在调用Activator.CreateInstance。
我在文档中找不到任何说明我无法做我想做的事情,有没有办法解决这个问题?
谢谢, 马特
答案 0 :(得分:0)
我刚开始玩nServiceBus,所以我能为你提供的只是理论:)。
您是在为消息接口定义实现类,还是nServiceBus自己生成类?如果是前者,请确保您仍然具有默认构造函数,并且该类和所有字段/事件都标记为[Serializable]或[NonSerialized]。如果是后者,则nServiceBus可能不知道如何生成(反)序列化可能需要的成员。您可能必须自己编写和映射实现类。