using System;
namespace NetWorkHelper
{
///
/// 消息单元类(可序列化)
///
[Serializable]
public class MsgCell : IDataCell
{
///
/// 消息标识
///
public int MessageId { get; set; }
private object _data;
///
/// 消息序列化数据
///
public object Data
{
get { return _data; }
set { _data = value; }
}
#region 构造函数
public MsgCell() { }
///
/// 构造函数
///
/// 消息标识
/// 序列化数据
public MsgCell(
int messageId,
object data)
{
MessageId = messageId;
_data = data;
}
#endregion
///
/// 将数据序列化成Byte[]数组
///
///
public byte[] ToBuffer()
{
byte[] data = SerHelper.Serialize(_data);
byte[] id = BitConverter.GetBytes(MessageId);
byte[] buffer = new byte[data.Length + id.Length];
Buffer.BlockCopy(id, 0, buffer, 0, id.Length);
Buffer.BlockCopy(data, 0, buffer, id.Length, data.Length);
return buffer;
}
///
/// 将Byte[]数组反序列化成数据结构
///
///
public void FromBuffer(byte[] buffer)
{
MessageId = BitConverter.ToInt32(buffer, 0);
_data = SerHelper.Deserialize(buffer, 4);
}
}
}