public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value) { if (value is LocalDateTime ldt) { return(ldt); } if (value is LocalDate ld) { return(ld.AtMidnight()); } if (value is DateTime d && d == d.Date) { return(LocalDate.FromDateTime(d)); } if (value is string s) { var r = _pattern.WithCulture(culture ?? CultureInfo.InvariantCulture).Parse(s); if (r.Success) { return(r.Value); } // little hack, not the finest, but should work if (DateTime.TryParse(s, out var dt)) { return(LocalDateTime.FromDateTime(dt)); } } return(base.ConvertFrom(context, culture, value)); }