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); } } }