【发布时间】:2012-06-28 22:48:29
【问题描述】:
COM 组件公开了一个 API,该 API 需要一个对象类型的 ref 参数。根据此 API 的文档,它将用值数组填充 ref 对象。现在我的问题在于 prod env 我无法预测我将返回的元素数量。
以下代码将起作用。
COMClass objCOM = new COMClass ();
object colOfInts= new int[10]; // What if I don't know the following will return array of size 10?
int errorcode = objCOM.FillThisIn(ref colOfInts);
但是如果我不知道 API 在 ref 中返回的数组的大小。
在这里更新
object colOfInts = null;
int errorcode = objCOM .FillThisIn(ref colOfInts);
现在当我检查类型时,我得到 System.Int32[*]
基本上我需要遍历这个数组并检查元素是否存在
【问题讨论】:
-
是 COM 端期待 SAFEARRAY 还是标准 int[]?
-
如果 API 要将值填充到您的结构中,它必须有办法让您知道结构的预期大小是多少。如果内存是在 API 端分配的,则完全不需要关心。
-
如果数组是从 API 调用内部返回的,为什么需要在代码端分配内存?
-
@MichaelEdenfield COM 需要一个对象类型而不是数组
-
或许可以在此处粘贴 API 文档中的相关部分,以便我们更好地为您提供帮助?