////// 泛型类型转换/// ///要转换的基础类型 /// 要转换的值////// /// by mcjiffy.cn/// public static T ConvertType<T>(object val){ if (val == null) return default(T);//返回类型的默认值 Type tp = typeof(T); //泛型Nullable判断,取其中的类型 if (tp.IsGenericType) { tp = tp.GetGenericArguments()[0]; } //string直接返回转换 if (tp.Name.ToLower() == "string") { return (T)val; } //反射获取TryParse方法 var TryParse = tp.GetMethod("TryParse", BindingFlags.Public | BindingFlags.Static, Type.DefaultBinder, new Type[] { typeof(string), tp.MakeByRefType() }, new ParameterModifier[] { new ParameterModifier(2) }); var parameters = new object[] { val, Activator.CreateInstance(tp) }; bool success = (bool)TryParse.Invoke(null, parameters); //成功返回转换后的值,否则返回类型的默认值 if (success) { return (T)parameters[1]; } return default(T);}