System.Array vs Byte [] При использовании CodeDom - PullRequest
1 голос
/ 07 октября 2011

Я ссылаюсь на файл COM DLL, используя CodeDom. Функция в файле dll имеет следующие параметры:

Public Function Foo(fooString As String, fooByte() As Byte) 
End Function

Когда на этот файл DLL ссылается непосредственно Visual Studio (не использует CodeDom), я вызываю эту функцию следующим образом - и решение строится без проблем:

Byte[] b = File.ReadAllBytes("Test.exe");
DllName.DllClass dll_obj_reference = new DllName.DllClass();

dll_obj_reference.Foo("data", b);

Примечание: Хотя я отправляю байтовый массив в функцию (по запросу VB6), Visual Studio фактически запрашивает тип System.Array. По какой-то причине решение по-прежнему работает нормально, и я могу без проблем вызвать функцию Foo.

Однако мне не так повезло, когда я делаю все это через CodeDom. Я добавляю interop.DllName в качестве ссылки на сгенерированный проект, и я вызываю точно так же. На этот раз, однако, CodeDom выдает ошибку, в которой говорится, что он не может преобразовать тип byte [] в тип ref System.Array.

Итак, мой вопрос - наконец: Как я могу преобразовать байтовый массив, показанный выше, в тип System.Array? Я не могу найти никаких статей в Интернете.

Спасибо за любую помощь!

1 Ответ

2 голосов
/ 07 октября 2011

Если он хочет, чтобы массив передавался по ссылке, вы должны сделать:

dll_obj_reference.Foo("data", ref b);
...