public static bool TryParse(string s, out FontPadding result) { if (s == null) { result = FontPadding.Empty; return(false); } var items = s.Split(new char[] { ' ', ',' }, StringSplitOptions.RemoveEmptyEntries); var valueList = new List <int>(items.Length); for (var i = 0; i < items.Length; i++) { if (int.TryParse(items[i], out var v) == true) { valueList.Add(v); } else { result = FontPadding.Empty; return(false); } } switch (valueList.Count) { case 1: { result = new FontPadding(valueList[0]); return(true); } case 2: { var value0 = valueList[0]; var value1 = valueList[1]; result = new FontPadding(value0, value1, value0, value1); return(true); } case 4: { var value0 = valueList[0]; var value1 = valueList[1]; var value2 = valueList[2]; var value3 = valueList[3]; result = new FontPadding(value0, value1, value2, value3); return(true); } default: { result = FontPadding.Empty; return(false); } } }
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { if (value is string text) { return(FontPadding.Parse(text)); } else if (value is int i) { return(new FontPadding(i)); } return(base.ConvertFrom(context, culture, value)); }