Я ссылаюсь на DLL-файл COM, используя 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? Я не могу найти статьи в Интернете.
Спасибо за любую помощь!