Как я могу получить выходной параметр SAFEARRAY(short) с COM-сервера, используя динамические типы C#C#

Место общения программистов C#
Ответить
Anonymous
 Как я могу получить выходной параметр SAFEARRAY(short) с COM-сервера, используя динамические типы C#

Сообщение Anonymous »

Я использую COM-сервер, у которого есть два метода со следующими сигнатурами:

Код: Выделить всё

HRESULT setData
(
[in] long id,
[in] SAFEARRAY(short) *arr,
[in] double* scalar1,
[in] double* scalar2
);

HRESULT getData
(
[in] long id,
[out] SAFEARRAY(short) *arr,
[out] double* scalar1,
[out] double* scalar2
);
Я хочу вызвать эту функцию из C#, используя динамические типы:

Код: Выделить всё

    Type comType = Type.GetTypeFromProgID("
");
dynamic comObject = Activator.CreateInstance(comType);
При этом первый метод можно вызвать без проблем:

Код: Выделить всё

comObject.setData(new short[] { 0, 0, 1, 2, 3, 4 }, 1.0, 2.0);
Второй

Код: Выделить всё

short[] arr = null;
comObject.getData(id, out arr, out double scalar1, out double scalar2);
выдает ошибку

Не удалось преобразовать аргумент 2 для вызова в getData
< /blockquote>
Я также пробовал разные варианты темы, такие как массив, объект и т. д., но с тем же сообщением об ошибке.
Итак, как мне передать аргумент выходного массива правильно?

Подробнее здесь: https://stackoverflow.com/questions/790 ... sing-c-sha
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»