c# – 这个“Object [*]”是什么类型,我用COM互操作?

我做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
}

这个解决方案似乎工作,因为你可以再次找到here.

On StackOverflow:他们讲下边界的数组> 0,它给你的对象[*]类型,一些链接可以是有趣的主题,但我认为第一个想法是好的.

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...