private static object ChangeType(Type type, object value) { object result; if (value == null && type.IsGenericType) { result = Activator.CreateInstance(type); } else { if (value == null) { result = null; } else { if (type == value.GetType()) { result = value; } else { if (type.IsEnum) { if (value is string) { result = Enum.Parse(type, value as string); } else { result = Enum.ToObject(type, value); } } else { if (type == typeof(bool) && typeof(int).IsInstanceOfType(value)) { int temp = int.Parse(value.ToString()); result = (temp != 0); } else { if (!type.IsInterface && type.IsGenericType) { Type type2 = type.GetGenericArguments()[0]; object obj = EntityConvert.ChangeType(type2, value); result = Activator.CreateInstance(type, new object[] { obj }); } else { if (value is string && type == typeof(Guid)) { result = new Guid(value as string); } else { if (value is string && type == typeof(Version)) { result = new Version(value as string); } else { if (!(value is IConvertible)) { result = value; } else if (value is MySqlDateTime) { object temp; temp = Convert.ChangeType(value.ToString(), System.TypeCode.DateTime); result = Convert.ChangeType(temp, type); } else { result = Convert.ChangeType(value, type); } } } } } } } } } return(result); }
private static void SetPropertyValue(PropertyInfo prop, object destObj, object value) { object temp = EntityConvert.ChangeType(prop.PropertyType, value); prop.SetValue(destObj, temp, null); }