Exemplo n.º 1
0
        /// <summary>
        /// 反序列化后触发
        /// </summary>
        /// <param name="context"></param>
        protected virtual void OnDeserialized(ReadContext context)
        {
            // 事件由外部动态指定,拥有优先处理权
            if (Deserialized != null) Deserialized(this, new ProtocolDeserializedEventArgs(context));

            IProtocolSerializable custom = context.GetCustomInterface();
            if (custom != null) custom.OnDeserialized(context);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 为指定类型创建实例时触发
        /// </summary>
        /// <remarks>当内部自定义后外部事件同时存在时,优先外部事件</remarks>
        /// <param name="context"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        protected virtual Object OnCreateInstance(ReadContext context, Type type)
        {
            Object obj = null;

            if (CreateInstance != null)
            {
                ProtocolCreateInstanceEventArgs e = new ProtocolCreateInstanceEventArgs();
                e.Context = context;
                e.Type = type;
                CreateInstance(this, e);
                obj = e.Obj;
            }

            if (obj == null)
            {
                IProtocolSerializable custom = context.GetCustomInterface();
                if (custom != null) obj = custom.OnCreateInstance(context, type);
            }

            return obj;
        }
Exemplo n.º 3
0
        /// <summary>
        /// 反序列化前触发
        /// </summary>
        /// <param name="context"></param>
        /// <returns>是否允许反序列化当前字段或属性</returns>
        protected virtual Boolean OnDeserializing(ReadContext context)
        {
            Boolean b = true;

            // 事件由外部动态指定,拥有优先处理权
            if (Deserializing != null)
            {
                ProtocolDeserializingEventArgs e = new ProtocolDeserializingEventArgs(context);
                e.Cancel = false;
                Deserializing(this, e);
                b = !e.Cancel;
            }

            IProtocolSerializable custom = context.GetCustomInterface();
            if (custom != null) b = custom.OnDeserializing(context);

            return b;
        }