protobuf-net是否可以根據基類型部分反序列化消息?在protobuf-net中是否有可能部分反序列化一個基於基類型的消息
在我的系統中,我有一個繼承層次,其中每個消息都從MessageBase繼承。 MessageBase有一個uint MessageType。理想情況下,我只想反序列化MessageBase並檢查它是否是我感興趣的MessageType,然後我可以丟棄該消息或作出反序列化實際消息的決定。這是爲了節省反序列化的成本(我有一個CPU週期預算和大量的消息處理)。
示例用法如下所示。
非常感謝。
MessageBase msgBase = ..deserialize;
if(msgBase.MessageType = 1)//1 is the Tick msg type
{
Tick tick = ..deserialize actual msg;
//do something with tick
}
//throw away msgBase
[ProtoContract,ProtoInclude(1, typeof(Tick))]
public class MessageBase
{
protected uint _messageType;
[ProtoMember(1)]
public uint MessageType
{
get { return _messageType; }
set{ _messageType = value;}
}
}
[ProtoContract]
public public class Tick : MessageBase
{
private int _tickId;
private double _value;
public Tick()
{
_messageType = 1;
}
[ProtoMember(1)]
public int TickID
{
get { return _tickId; }
set { _tickId = value; }
}
[ProtoMember(2)]
public double Value
{
get { return _value; }
set { _value = value; }
}
}
謝謝我將使用您的示例代碼。 – DayTwo 2011-02-15 12:16:29