/// <summary>
 /// 添加键和值到指定的字典
 /// </summary>
 /// <param name="dict"></param>
 /// <param name="encoding"></param>
 /// <param name="key"></param>
 /// <param name="value"></param>
 public static void AddToDictionary(DictionaryDataType dict, Encoding encoding, string key, string value)
 {
     dict.Add(Create(encoding, key), Create(encoding, value));
 }
 /// <summary>
 /// 添加键和值到指定的字典
 /// </summary>
 /// <param name="dict"></param>
 /// <param name="key"></param>
 /// <param name="value"></param>
 public static void AddToDictionary(DictionaryDataType dict, string key, string value)
 {
     AddToDictionary(dict, dict.TextEncoding ?? Encoding.Default, key, value);
 }
 /// <summary>
 /// 添加键和值到指定的字典
 /// </summary>
 public static void AddToDictionary(DictionaryDataType dict, string key, long value)
 {
     dict.Add(Create(dict.TextEncoding, key), new IntegerDataType(value));
 }
        static DictionaryDataType ParseAsDicionary(Encoding textEncoding, System.IO.Stream stream)
        {
            //键值一定是字符串
            var result = new DictionaryDataType()
            {
                TextEncoding      = textEncoding,
                DataStartPosition = stream.Position
            };

            if (stream.ReadByte() != 'd')
            {
                throw new InvalidOperationException();
            }

            int ch;

            while ((ch = stream.ReadByte()) != -1 && ch != 'e')
            {
                stream.Seek(-1, System.IO.SeekOrigin.Current);
                //读取key
                var          key = ParseAsString(textEncoding, stream);
                DataTypeBase value;
                //读取值
                ch = stream.ReadByte();
                if (ch == -1)
                {
                    throw new UnexpectEndException();
                }

                stream.Seek(-1, System.IO.SeekOrigin.Current);
                if (ch >= '0' && ch <= '9')
                {
                    value = ParseAsString(textEncoding, stream);
                }
                else if (ch == 'i')
                {
                    value = ParseAsNumberic(stream);
                }
                else if (ch == 'l')
                {
                    value = ParseAsList(textEncoding, stream);
                }
                else if (ch == 'd')
                {
                    value = ParseAsDicionary(textEncoding, stream);
                }
                else
                {
                    break;                      //未知的字符,中止。
                }
                result.Add(key, value);
            }
            if (ch != 'e')
            {
                throw new UnexpectEndException();
            }

            result.DataEndPosition = stream.Position - 1;

            return(result);
        }