一直都是个头疼的问题,感谢
1.
public object ChangeType(object value, Type conversionType){ if ( conversionType.IsGenericType && conversionType.GetGenericTypeDefinition( ).Equals( typeof( Nullable<> ) ) ) { if(value == null) return null; System.ComponentModel.NullableConverter nullableConverter = new System.ComponentModel.NullableConverter(conversionType); conversionType = nullableConverter.UnderlyingType; } return Convert.ChangeType(value, conversionType);}
引用:
2.public class DataTypeConverter { public static object ChangeType(Type type,object value) { if ((value == null) && type.IsGenericType) { return Activator.CreateInstance(type); } if (value == null) { return null; } if (type == value.GetType()) { return value; } if (type.IsEnum) { if (value is string) { return Enum.Parse(type, value as string); } return Enum.ToObject(type, value); } if (!type.IsInterface && type.IsGenericType) { Type type1 = type.GetGenericArguments()[0]; object obj1 = DataTypeConverter.ChangeType(type1,value); return Activator.CreateInstance(type, new object[] { obj1 }); } if ((value is string) && (type == typeof(Guid))) { return new Guid(value as string); } if ((value is string) && (type == typeof(Version))) { return new Version(value as string); } if (!(value is IConvertible)) { return value; } return Convert.ChangeType(value, type); } }
引用: