Example #1
0
            public override object Convert(object value, Type type)
            {
                if (value == null)
                {
                    return(TypeHelper.GetDefault(type));
                }
                type = TypeHelper.GetNonNullableType(type);
                if (type == typeof(Time))
                {
                    return(Time.Parse(value.ToString()));
                }
                if (type == typeof(Time2))
                {
                    return(Time2.Parse(value.ToString()));
                }
                Type vtype = value.GetType();

                if (type != vtype)
                {
                    if (type.IsEnum)
                    {
                        if (vtype == typeof(string))
                        {
                            return(Enum.Parse(type, (string)value));
                        }
                        else
                        {
                            Type utype = Enum.GetUnderlyingType(type);
                            if (utype != vtype)
                            {
                                value = System.Convert.ChangeType(value, utype);
                            }
                            return(Enum.ToObject(type, value));
                        }
                    }
                    return(System.Convert.ChangeType(value, type));
                }
                return(value);
            }