/// <summary> /// 类型转换(string转换,如果转换失败则返回类型的默认值) /// </summary> /// <typeparam name="T">目标类型</typeparam> /// <param name="value">需要转换的值</param> /// <param name="defaultValue">默认值</param> /// <returns>转换结果</returns> public static T To <T>(this string value, T defaultValue = default(T)) { try { value = (value ?? string.Empty).Trim(); dynamic returnValue = defaultValue; if (string.IsNullOrWhiteSpace(value)) { return(returnValue); } var type = typeof(T); IChangeValue changeType = null; if (SingletonNew <ConcurrentDictionary <Type, IChangeValue> > .Instance.TryGetValue(type, out changeType)) { if (changeType != null) { dynamic changeValue = changeType; var change = changeValue.CheckAndChange(value); if (change.HasChange) { return(change.ChangeResult); } return(returnValue); } } if (type.IsEnum) { if (value.IsCheckType <int>()) { returnValue = Enum.ToObject(type, int.Parse(value)); } return(returnValue); } return((T)value.ToObject(typeof(T), CultureInfo.InvariantCulture)); } catch { return(defaultValue); } }
/// <summary> /// 类型判断 /// </summary> /// <typeparam LanguageName="TEntity">需要判断的类型</typeparam> /// <param name="value">判断的对象</param> /// <returns>判断的结果</returns> public static bool IsCheckType <T>(this string value) { value = (value ?? string.Empty).Trim(); if (string.IsNullOrWhiteSpace(value)) { return(false); } var type = typeof(T); IChangeValue changeType = null; if (!SingletonNew <ConcurrentDictionary <Type, IChangeValue> > .Instance.TryGetValue(type, out changeType)) { return(false); } if (changeType != null) { dynamic changeValue = changeType; return(changeValue.CheckAndChange(value).HasChange); } return(false); }