/// <summary> /// 反序列化 /// </summary> /// <typeparam name="valueType">数据类型</typeparam> /// <param name="data">数据</param> /// <param name="value">目标对象</param> /// <returns>是否成功</returns> internal bool DeSerializeTcpServer <valueType>(ref SubArray <byte> data, ref valueType value) { if (data.Length >= sizeof(int) * 3 && (data.Length & 3) == 0) { fixed(byte *dataFixed = (Buffer = data.Array)) { start = dataFixed + (bufferIndex = data.Start); int length = data.Length - sizeof(int); End = start + length; if (((uint)(*(int *)End ^ length) | ((*(uint *)start & SerializeConfig.HeaderMapAndValue) ^ SerializeConfig.HeaderMapValue)) == 0) { //MemberMap = null; getGlobalVersion(); if (isReferenceMember == TypeDeSerializer <valueType> .IsReferenceMember) { if (points != null) { points.Clear(); } } else { if (isReferenceMember) { isReferenceMember = false; } else { isReferenceMember = true; if (points == null) { points = ReusableDictionary.CreateInt <object>(); } else { points.Clear(); } } } isReferenceArray = true; State = DeSerializeState.Success; TypeDeSerializer <valueType> .DeSerializeTcpServer(this, ref value); return(State == DeSerializeState.Success && Read == End); } } } return(false); }