/// <summary> /// 获取集合中具有指定键的项的T类型值(注:T类型应与defaultValue类型相同) /// </summary> /// <typeparam name="T"></typeparam> /// <param name="collection"></param> /// <param name="key"></param> /// <param name="defaultValue"></param> /// <returns></returns> public static T GetEnum <T>(this NameValueCollection collection, string key, Enum defaultValue) where T : struct { Type tType = typeof(T); //判断类型条件是否成立 if (tType != defaultValue.GetType()) { throw new Exception("T must be the same type with param defaultValue."); } int emValue = GetInt(collection, key, defaultValue.GetValue()); if (defaultValue.ContainsKey(emValue)) { return((T)Enum.Parse(tType, emValue.ToString())); } else { return((T)Convert.ChangeType(defaultValue, tType)); } }