在运行时将对象转换为字符串数组

Ale*_*eev 1 c# casting

我的代码中有一行:

var objects = ExternalApiGetObjects(....);
Run Code Online (Sandbox Code Playgroud)

在开发时,我只知道ExternalApiGetObjects返回一个Object实例。事实上,我确信objects变量是某种类型的数组。我想将objects变量传递给String.Join方法,但在运行时我得到了一个类似的异常:“'System.Int32[]' 类型的对象无法转换为'System.String[]' 类型。”

在大多数情况下, anobjects不会是字符串数组。它可以是一个 int 数组,甚至是某个用户类型的数组。我只知道对象是一个数组,我想调用ToString()该数组的每个项目以创建一个类型为string[].

如何将我的转换objectsstring[]

Rez*_*aei 5

OP:它可以是一个 int 数组,甚至是某个用户类型的数组。我只知道对象是一个数组,我想对该数组的每个项目调用 ToString() 以创建一个类型为 string[] 的新对象

您可以将其转换为IEnumerable,然后使用Cast<T>将元素转换为对象,然后选择元素。例如:

object o = new int[] { 1, 2, 3 };
var array = (o as IEnumerable).Cast<object>().Select(x => x.ToString()).ToArray(); 
Run Code Online (Sandbox Code Playgroud)