/// <summary> /// 解析字典。 /// </summary> /// <param name="dataProviderOwner">本地化管理器。</param> /// <param name="dictionaryBytes">要解析的字典二进制流。</param> /// <param name="startIndex">字典二进制流的起始位置。</param> /// <param name="length">字典二进制流的长度。</param> /// <param name="userData">用户自定义数据。</param> /// <returns>是否解析字典成功。</returns> public override bool ParseData(LocalizationProvider dataProviderOwner, byte[] dictionaryBytes, int startIndex, int length, object userData) { try { using (MemoryStream memoryStream = new MemoryStream(dictionaryBytes, startIndex, length, false)) { using (BinaryReader binaryReader = new BinaryReader(memoryStream, Encoding.UTF8)) { while (binaryReader.BaseStream.Position < binaryReader.BaseStream.Length) { int dataRowBytesLength = binaryReader.ReadInt32(); int m_Id = binaryReader.ReadInt32(); Language m_Language = (Language)Enum.Parse(typeof(Language), binaryReader.ReadString()); string m_Owner = binaryReader.ReadString(); string m_Block = binaryReader.ReadString(); string m_Key = binaryReader.ReadString(); string m_Value = binaryReader.ReadString(); int m_Size = binaryReader.ReadInt32(); bool m_NewLine = binaryReader.ReadBoolean(); string m_Color = binaryReader.ReadString(); string m_Index = binaryReader.ReadString(); FBlockInfo fBlockInfo = dataProviderOwner.GetBlockInfoDic(m_Owner, m_Block); DictionaryInfo dictionary = new DictionaryInfo(); dictionary.Id = m_Id; dictionary.Language = m_Language; dictionary.Size = m_Size; dictionary.NewLine = m_NewLine; dictionary.Color = m_Color; dictionary.Owner = m_Owner; dictionary.Block = m_Block; dictionary.Key = m_Key; dictionary.Value = m_Value; fBlockInfo.UpdateDicInfo(dictionary); //Log.Info("m_Owner" + m_Owner + "m_Block" + m_Block + "m_Key" + m_Key + "m_Value" + m_Value); } } } return(true); } catch (Exception exception) { Log.Warning("Can not parse dictionary bytes with exception '{0}'.", exception.ToString()); return(false); } }