Я пытаюсь выяснить, как преобразовать произвольный массив или коллекцию в строку с помощью отражения, и это сводит меня с ума ... ОРЕХИ ... Я почти готов приблизить мою красную линию поворота к монитору компьютера здесь.
Так, например, учитывая массив объектов Color, я хочу получить строковое представление по умолчанию этого массива (вы знаете, разделенные точкой с запятой или что-то еще), используя ArrayConverter или ColorConverter или любой другой подходящий конвертер. Я могу сделать это для простых типов объектов, но коллекции ускользают от меня.
Вот как я итерирую свойства (произвольного) объекта, используя отражение. Как в общем случае преобразовать массив, содержащий произвольные типы, в стандартное строковое представление, используя соответствующий преобразователь?
Type t = widget.GetType();
System.Reflection.PropertyInfo[] props = t.GetProperties();
foreach (PropertyInfo prop in props)
{
TypeConverter converter = TypeDescriptor.GetConverter(prop.PropertyType);
if (converter != null)
{
object o = prop.GetValue(widget, null);
att.Value = converter.ConvertToString(o);
// This returns some BS like "System.Array [2]"
// I need the actual data.
}
}
РЕДАКТИРОВАТЬ: Если я попробую это:
att.Value = o.ToString();
Возвращает: "System.Drawing.Color []". Принимая во внимание, что я хочу "255,202,101; 127,127,127" или что-то еще, строковое представление по умолчанию используется, например, в редакторе свойств.
Спасибо!