用于上下文设置,我在nServiceBus客户端和nSerivceBus服务器之间交换消息。它是命名空间xyz.Messages和和类,消息:IMessageNservicebus派生类型的派生类型问题
我有更多的邮件在其他dll中,如xyz.Messages.Domain1,xyz.Messages.Domain2,xyz.Messages.Domain3。 和派生的消息形成该基本消息,消息。
我定义为像端点:
at client
<UnicastBusConfig>
<MessageEndpointMappings>
<add Messages="xyz.Messages" Endpoint="xyzServerQueue" />
<add Messages="xyz.Messages.Domain1" Endpoint="xyzServerQueue" />
<add Messages="xyz.Messages.Domain2" Endpoint="xyzServerQueue" />
</MessageEndpointMappings>
</UnicastBusConfig>
在服务器
<UnicastBusConfig>
<MessageEndpointMappings>
<add Messages="xyz.Messages" Endpoint="xyzClientQueue" />
<add Messages="xyz.Messages.Domain1" Endpoint="xyzClientQueue" />
<add Messages="xyz.Messages.Domain2" Endpoint="xyzClientQueue" />
</MessageEndpointMappings>
</UnicastBusConfig>
和或总线初始化为
IBus serviceBus = Configure.With()
.SpringBuilder()
.XmlSerializer()
.MsmqTransport()
.UnicastBus()
.LoadMessageHandlers()
.CreateBus()
.Start();
现在,当我尝试发送消息类型的实例任何类型的派生类型的消息,它成功地发送消息在服务器上,我得到了亲每种类型。
例如。
Message message= new Message();
Bus.Send(message); // works fine, transfers Message type
message = new MessageDerived1();
Bus.Send(message); // works fine, transfers MessageDerived1 type
message = new MessageDerived2();
Bus.Send(message); // works fine, transfers MessageDerived2 type
我的问题出现时的任何类型的,说MessageDerived1,包含类型的消息的成员变量,并且当我将其分配给一个派生类型,类型未正确通过线路传输。它只作为消息类型传递,而不是派生类型。
public class MessageDerived2 : Message
{
public Message message;
}
MessageDerived2 messageDerived2= new MessageDerived2();
messageDerived2.message = new MessageDerived1();
message = messageDerived2;
Bus.Send(message); // incorrect behaviour, transfers MessageDerived2 correctly, but looses type of MessageDerived2.Message (it deserializes as Message type, instead of MessageDerived1)
任何帮助,强烈赞赏。
感谢 TJ