/// <summary> /// 对象序列化 /// </summary> /// <param name="deSerializer">二进制数据反序列化</param> /// <param name="value">数据对象</param> internal void MemberDeSerialize(DeSerializer deSerializer, ref valueType value) { if (deSerializer.CheckMemberCount(memberCountVerify)) { fixedMemberDeSerializer(deSerializer, ref value); deSerializer.Read += fixedFillSize; if (memberDeSerializer != null) { memberDeSerializer(deSerializer, ref value); } if (isJson || jsonMemberMap != null) { deSerializer.ParseJson(ref value); } } else if (isMemberMap) { MemberMap memberMap = deSerializer.GetMemberMap <valueType>(); if (memberMap != null) { byte *start = deSerializer.Read; fixedMemberMapDeSerializer(memberMap, deSerializer, ref value); deSerializer.Read += (int)(start - deSerializer.Read) & 3; if (memberMapDeSerializer != null) { memberMapDeSerializer(memberMap, deSerializer, ref value); } if (isJson) { deSerializer.ParseJson(ref value); } else if (jsonMemberMap != null) { foreach (int memberIndex in jsonMemberIndexs) { if (memberMap.IsMember(memberIndex)) { deSerializer.ParseJson(ref value); return; } } } } } else { deSerializer.State = DeSerializeState.MemberMap; } }
/// <summary> /// 对象反序列化 /// </summary> /// <param name="deSerializer">二进制数据反序列化</param> /// <param name="value">数据对象</param> private void deSerializeTcpServer(DeSerializer deSerializer, ref valueType value) { if (deSerializer.CheckMemberCount(memberCountVerify)) { fixedMemberDeSerializer(deSerializer, ref value); deSerializer.Read += fixedFillSize; if (memberDeSerializer != null) { memberDeSerializer(deSerializer, ref value); } if (isJson || jsonMemberMap != null) { deSerializer.ParseJson(ref value); } } else { deSerializer.State = DeSerializeState.MemberMap; } }