用於上下文設置,我在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