我通过Pub-Sub模型通过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语句。如果type是A类,我将它转换为A类并执行所需的操作。如果type是B类,我将它转换为B类并执行所需的操作。
我已经搜索了1小时的答案,但我找不到。希望SO会有所帮助。因为我是新手,请温柔地对待我。感谢。
答案 0 :(得分:0)
你无法(安全地)使用MessagePack,因为它是无模式序列化。你有两个选择 -
在包含消息类型(A或B)的zeromq消息中添加一个字节前缀。
使用protobuf而不是message-pack,并且顶级消息类型包含A和B的两种可选消息类型。