Nullable 类型的转换
一直都是个头疼的问题,感谢maplye
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); }
引用:http://blog.pumacode.org/2006/05/18/using-convert-changetype-on-nullable-types/
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); } }
引用:http://weblogs.asp.net/pjohnson/archive/2006/02/07/437631.aspx