private object DeserializeImpl(Stream stream) { MessagePackage package = ProtoBuf.Serializer.Deserialize <MessagePackage>(stream); MemoryStream messageBuf = new MemoryStream(package.message); return(deserializeTable[new MessageTypeID() { CategoryID = package.category_id, TypeID = package.type_id }](messageBuf)); }
public void Serialize <T>(T message, Stream dest) where T : class { Debug.Assert(ProtoBuf.Serializer.NonGeneric.CanSerialize(message.GetType())); MemoryStream messageBuf = new MemoryStream(); SerializeImpl(messageBuf, message); var messageType = messageTypeTable[message.GetType()]; MessagePackage package = new MessagePackage(); package.category_id = messageType.CategoryID; package.type_id = messageType.TypeID; package.message = messageBuf.ToArray(); SerializeImpl(dest, package); }