我从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 []'类型。
如何解决这个问题?
答案 0 :(得分:1)
您需要创建一个下限为0的SAFEARRAY,以便与.NET double []兼容。
如果那不是一个选项,那么您需要在C#代码中强制转换为Array并使用其GetValue()方法来访问元素。使用GetLowerBound()知道从哪里开始。