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()); }