Example #1
0
        /// <summary>
        /// Converts the given value object to the destination type.
        /// </summary>
        public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)
        {
            if (destinationType == null)
            {
                throw new ArgumentNullException(nameof(destinationType));
            }

            if (destinationType == UnderlyingType && value != null && NullableType.GetTypeInfo().IsAssignableFrom(value.GetType().GetTypeInfo()))
            {
                return(value);
            }
            else if (value == null)
            {
                // Handle our own nulls here
                if (destinationType == typeof(string))
                {
                    return(string.Empty);
                }
            }
            else if (UnderlyingTypeConverter != null)
            {
                return(UnderlyingTypeConverter.ConvertTo(context, culture, value, destinationType));
            }

            return(base.ConvertTo(context, culture, value, destinationType));
        }