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)); }