2012-06-17 74 views
0

我從C++ COM庫中返回C#中的COM對象。該對象具有返回類型C#的屬性 - 「對象」。該文檔表明其類型爲「變體」(以C++語言編寫),幷包含三個「double」值的一維數組。做演員後,如何從COM對象在C#中返回數組(double [])?

Object obj = m.TextPosition; // "m" - is com object 
var d3 = (System.Double[])obj;// cast 

我得到的錯誤:「無法投類型的對象System.Double [*]爲鍵入 'System.Double []'

如何。解決這個問題?

回答

1

你需要創建一個SAFEARRAY與下限的0是一個.NET雙[]兼容。

如果這不是一種選擇,那麼你需要轉換成數組在C#代碼並使用它的GetValue()方法來訪問元素。使用GetLowerBound()知道從哪裏開始。

+0

http://www.west-wind.com/weblog/posts/2008/Aug/26/Accessing-a-SafeArray-Result-from-a-COM-Call-in-C –

+0

謝謝!你的回答幫助我找到了解決方案。閱讀更多上面。 –

+0

您的回答給了我解決方案空間,從中獲得我所需要的並不困難。這意味着你的回答對我來說是準確的。謝謝! –