У меня есть object, значение которого может быть одним из нескольких типов массивов, таких как int[] или string[], и я хочу преобразовать его в string[]. Моя первая попытка не удалась:
void Do(object value)
{
if (value.GetType().IsArray)
{
object[] array = (object[])value;
string[] strings = Array.ConvertAll(array, item => item.ToString());
// ...
}
}
с ошибкой времени выполнения Unable to cast object of type 'System.Int32[]' to type 'System.Object[]', что имеет смысл в ретроспективе, поскольку мой int[] не содержит целых чисел в блоке.
После того, как я выскочил, я пришел к этой рабочей версии:
void Do(object value)
{
if (value.GetType().IsArray)
{
object[] array = ((Array)value).Cast<object>().ToArray();
string[] strings = Array.ConvertAll(array, item => item.ToString());
// ...
}
}
Я думаю, что все в порядке, но кажется довольно запутанным. У кого-то есть более простой способ?