using System;
using System.ComponentModel;
using Server.Core;

namespace NetWorkMessage
{
    
    public abstract class ProtoObject : ISupportInitialize,ICloneable
    {
        public object Clone()
        {
            byte[] bytes = MessagePackHelper.Serialize(this);
            return MessagePackHelper.Deserialize(this.GetType(), bytes);
        }

        /// <summary>
        /// 序列化之前的初始化
        /// </summary>
        public virtual void BeginInit()
        {
            
        }

        /// <summary>
        /// 反序列化之前的初始化
        /// </summary>
        public virtual void EndInit()
        {
            
        }
    }
}