У меня есть 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());
// ...
}
}
Я думаю, что все в порядке, но кажется довольно запутанным. У кого-то есть более простой способ?