2014-03-03 33 views
0

我通過Pub-Sub模型通過ZMQ發送數據。反序列化通過ZMQ發送的兩個對象

我有2個類,一個叫A類,它包含兩個字符串,另一個是包含兩個雙字的B類。

我的發佈者程序將序列化A類,有時是B類,並通過ZMQ發送它們。我的客戶程序如何知道哪個類型的類被髮送並相應地轉換它?我試着做下面的代碼和消息框顯示MsgPack.MessagePackObject。

var ser = MsgPack.Serialization.MessagePackSerializer.Create<object>();     
object unpack = ser.Unpack(stream); 
MessageBox.Show(unpack.GetType().ToString()); 

我希望得到像A類或B類的類型,我會做一個if語句。如果類型是類A,我將它轉換爲類A並執行所需的操作。如果類型是類B,我將它轉換爲類B並執行所需的操作。

我已經搜索了1小時的答案,但我找不到。希望SO會有所幫助。由於我是新手,請溫和我一下。謝謝。

+0

查找到的主題和發佈/訂閱信封頂級消息類型。 http://zguide.zeromq.org/page%3aall#Pub-Sub-Message-Envelopes – engineerC

回答

0

無法使用MessagePack(安全地)執行此操作,因爲它是無模式序列化。您有兩個選項 -

  1. 將一個字節前綴添加到包含消息類型(A或B)的zeromq消息中。

  2. 使用protobuf的,而不是信息包,並有包含兩個可選的消息類型爲A和B.

相關問題