static object ReadGeneric <TKey, TValue>(XXmlSerializerInternal serializer, XmlReader reader)
        {
            Dictionary <TKey, TValue> obj = new Dictionary <TKey, TValue>();
            bool is_null;

            while (serializer.ReadTypeStart(reader, out is_null))
            {
                Debug.Assert(is_null == false);
                // Key
                TKey key;
                serializer.ReadTypeStart(reader, out is_null);
                Debug.Assert(is_null == false);// Key 不能为null
                key = (TKey)serializer.InternalRead(reader, typeof(TKey));
                serializer.ReadTypeEnd(reader);
                // Value
                TValue value = default(TValue);
                serializer.ReadTypeStart(reader, out is_null);
                if (is_null == false)
                {
                    value = (TValue)serializer.InternalRead(reader, typeof(TValue));
                }
                obj.Add(key, value);
                serializer.ReadTypeEnd(reader);
            }
            return(obj);
        }
        static object ReadGeneric <T>(XXmlSerializerInternal serializer, XmlReader reader)
        {
            List <T> obj = new List <T>();
            bool     is_null;

            while (serializer.ReadTypeStart(reader, out is_null))
            {
                T item = default(T);
                if (is_null == false)
                {
                    item = (T)serializer.InternalRead(reader, typeof(T));
                }
                obj.Add(item);
                serializer.ReadTypeEnd(reader);
            }
            return(obj.ToArray());
        }