public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
        {
            if (value.GetType() == typeof(string))
            {
                if (context.Instance is WhiskeyPropertyContainer)
                {
                    WhiskeyPropertyContainer model = (WhiskeyPropertyContainer)context.Instance;
                    Type toType = model.Value.GetType();
                    if (ConverterManager.Instance.hasConverter(toType))
                    {
                        return(ConverterManager.Instance.convertFromString(toType, (string)value));
                    }
                    else
                    {
                        try
                        {
                            object converted = Convert.ChangeType(value, toType);
                            return(converted);
                        }
                        catch (Exception e)
                        {
                            return(model.Value);
                        }
                    }
                }
            }

            return(base.ConvertFrom(context, culture, value));
        }
        public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
        {
            if (destinationType == typeof(string))
            {
                WhiskeyPropertyContainer container = (WhiskeyPropertyContainer)value;

                TypeConverter converter = WhiskeyTypeConverters.lookUp(container.Value.GetType().Name);
                if (converter != null)
                {
                    object newValue = converter.ConvertTo(context, culture, container.Value, destinationType);



                    return(newValue);
                }


                if (ConverterManager.Instance.hasConverter(container.Value.GetType()))
                {
                    return(ConverterManager.Instance.convertToString(container.Value));
                }
                else
                {
                    try
                    {
                        return(Convert.ChangeType(container.Value, destinationType));
                    }
                    catch (Exception e)
                    {
                        return(container.Value.ToString());
                    }
                }
            }

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