【问题标题】:How return array(double[]) from com object in C#?如何从 C# 中的 com 对象返回数组(double [])?
【发布时间】:2012-06-18 04:33:05
【问题描述】:

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

如何解决这个问题?

【问题讨论】:

    标签: c# c++ com


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢!您的回答帮助我找到了解决方案。阅读更多内容。
    • 您的回答给了我解决方案的空间,从中得到我需要的东西并不困难。这意味着你的回答对我来说是准确的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2011-09-14
    • 2014-09-29
    • 1970-01-01
    • 2021-01-30
    • 1970-01-01
    • 1970-01-01
    • 2016-01-25
    • 1970-01-01
    相关资源
    最近更新 更多