系统.Array vs Byte[]当使用CodeDom时

本文关键字:CodeDom Array vs Byte 系统 | 更新日期: 2023-09-27 18:10:34

我正在使用CodeDom引用COM dll文件。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完成这一切时,我就不那么幸运了。我添加了互操作。DllName作为对生成的项目的引用,我以同样的方式调用。但是这一次,CodeDom返回了一个错误,说它不能将类型byte[]转换为类型ref System.Array。

所以,我的问题-最后:如何将上面显示的字节数组转换为System.Array类型?我在网上找不到任何文章。

谢谢你的帮助!

系统.Array vs Byte[]当使用CodeDom时

如果它想通过引用传递数组,您可以这样做:

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

可以将字节数组强制转换为System。数组

Byte[] b = File.ReadAllBytes("Test.exe");
Array barr = (Array)b;
DllName.DllClass dll_obj_reference = new DllName.DllClass();
dll_obj_reference.Foo("data", barr);