我做C#excel互操作.我从C#调用宏,我期望对象的数组.我可以从返回二维数组的宏中获取二维数组的对象.
但是,另一个(第三方)宏应该返回一维数组.我不能得到(object [])xlApp.Run(…)工作(它抛出异常),调试器中的类型信息表示结果是Object [*]类型.来自异常的实际消息是
Unable to cast object of type 'System.Object[*]' to type 'System.Object[]'.
这个Object [*]类型是什么,如何从中检索一维数组?
编辑:对我来说,这可能意味着一个变数的安慰.但是,然后出现两个问题:为什么一切都可以与二维数组?如何将SAFEARRAY转换为C#数组?
解决方法
我对你的问题发表了各种各样的文章:
OPCFondation :基本上而不是将其声明为一个对象数组,您可以将其声明为Array而不提供任何元素类型.所以不要在Object []或Array中投射,并使用foreach循环来使用子阵列.
foreach(object subobject in (Array)myarrayitem) { //do stuff with the subobject,even browse further }
On StackOverflow:他们讲下边界的数组> 0,它给你的对象[*]类型,一些链接可以是有趣的主题,但我认为第一个想法是好的.