0

我从 C++ COM 库返回 C# 中的 COM 对象。该对象具有返回类型 C# - "object"的属性。文档表明它的类型是“Variant” (在 C++ 中)并且包含三个“double”值的一维数组​​​。选好演员后,

Object obj = m.TextPosition;  // "m" - is com object
var d3 = (System.Double[])obj;// cast

我收到错误消息:“无法将 'System.Double[*]' 类型的对象转换为 'System.Double[]' 类型

如何解决这个问题呢?

4

1 回答 1

1

您需要创建一个下限为 0 的 SAFEARRAY 以与 .NET double[] 兼容。

如果这不是一个选项,那么您需要在 C# 代码中转换为 Array 并使用其 GetValue() 方法来访问元素。使用 GetLowerBound() 知道从哪里开始。

于 2012-06-17T20:33:05.207 回答