我在 C# 中从 C++ COM 库返回 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 的 SAFEARRAY 才能与 .NET double[] 兼容。
如果这不是一个选项,那么您需要在 C# 代码中强制转换为 Array 并使用其 GetValue() 方法来访问元素。使用 GetLowerBound() 知道从哪里开始。
关于c# - 如何从 C# 中的 com 对象返回数组(double[])?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11074527/