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

标签 c# c++ com

我在 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/

相关文章:

c++ - 通过 C++(可能是 VS)的组件对象模型

.net - 创建仅包含枚举的 COM 库时出现问题

.net - Outlook 2003 加载项 - 创建 WPF 窗口后应用程序关闭时出现 COM 异常

c# - Java 从无效的 HTML 创建 PDF 或图像

c++ - 模板类型不匹配

c# - 使用现有的哈希集作为键来创建新字典

c++ - 如何使用标准跨度进行边界检查?

c++ - 使用 uncrustify 在 if-else block 后添加换行符

c# - 使用 XmlSerializer 添加不带前缀的命名空间

c# - 如何在c#中解析html中的文本