Toller Ausschnitt @mathieu. Ich musste das für die Umwandlung von longs verwenden, aber anstatt einen LongArrayConverter zu erstellen, habe ich eine Version geschrieben, die Generics verwendet.
public class ArrayConverter : TypeConverter
{
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
{
return sourceType == typeof(string);
}
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
{
string val = value as string;
if (string.IsNullOrEmpty(val))
return new T[0];
string[] vals = val.Split(',');
List items = new List();
Type type = typeof(T);
foreach (string s in vals)
{
T item = (T)Convert.ChangeType(s, type);
items.Add(item);
}
return items.ToArray();
}
}
Diese Version sollte mit jedem Typ funktionieren, der von einem String konvertierbar ist.
[TypeConverter(typeof(ArrayConverter))]
public int[] Ints { get; set; }
[TypeConverter(typeof(ArrayConverter))]
public long[] Longs { get; set; }
[TypeConverter(typeof(ArrayConverter))]
public DateTime[] DateTimes { get; set; }