如何从C#中的com对象返回数组(double [])?

时间:2012-06-17 20:26:33

标签: c# c++ com

我从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 []'类型。

如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

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

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