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