/// <summary>取得指定键的强类型值</summary> /// <typeparam name="T"></typeparam> /// <param name="key"></param> /// <returns></returns> public T GetItem <T>(String key) { if (!Contain(key)) { return(default(T)); } String value = this[key]; if (String.IsNullOrEmpty(value)) { return(default(T)); } Type t = typeof(T); if (t.IsValueType || Type.GetTypeCode(t) == TypeCode.String || t == typeof(Object)) { return((T)Convert.ChangeType(value, t)); } else if (t.IsArray || value is IEnumerable) { ExtendData data = FromXml(value); if (data == null) { throw new XException("ExtendData无法分析数据" + value); } List <String> list = new List <String>(); for (Int32 i = 1; i < Int32.MaxValue; i++) { if (!data.Contain("Item" + i.ToString())) { break; } list.Add(data["Item" + i.ToString()]); } return((T)Convert.ChangeType(list.ToArray(), t)); } throw new XException("不支持的类型{0},键{1}", typeof(T), key); }