2012-06-17 1 views
0

Я возвращаю COM-объект в C# из библиотеки COM C++. Объект имеет свойство, которое возвращает тип C# - «объект». Документация указала, что ее тип является «Вариант» (на C++) и содержит одномерный массив из трех значений «double». После того, бросание,Как вернуть массив (double []) из объекта com в C#?

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

Ваш ответ дал мне пространство для решения, из которого получить то, что мне было нужно, было не сложно. Это означает, что вы отвечаете за меня. Благодаря! –