예제 #1
0
 /// <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;
     }
 }