System.Array vs Byte []使用CodeDom时

时间:2011-10-07 01:08:04

标签: c# arrays codedom

我正在使用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完成这一切并不是那么幸运。我添加了interop.DllName作为生成项目的引用,我也以同样的方式调用。但是这一次,CodeDom回吐了一个错误,说它无法将类型byte []转换为类型ref System.Array。

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

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

如果它想要一个通过引用传递的数组,你可以这样做:

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

答案 1 :(得分:0)

您可以将字节数组转换为System.Array

Byte[] b = File.ReadAllBytes("Test.exe");

Array barr = (Array)b;

DllName.DllClass dll_obj_reference = new DllName.DllClass();

dll_obj_reference.Foo("data", barr);
相关问题