public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { object result; if (DefaultConverter.TryConvertTo(value, targetType, culture, m_converter, out result)) { return(result); } if (value != null) { var valueType = value.GetType(); if (DefaultConverter.TryConvertTo(value, targetType, culture, TypeDescriptor.GetConverter(valueType), out result)) { return(result); } if (targetType.IsAssignableFrom(valueType)) { return(value); } } else if (DefaultConverter.IsNullableType(targetType)) { return(value); } throw new ArgumentException("Cannot convert to type " + targetType.FullName + ".", "value"); }