使用 CodeDom 时的 System.Array 与 Byte[]
我正在使用 CodeDom 引用 COM dll 文件。 dll 文件中的函数具有如下参数:
Public Function Foo(fooString As String, fooByte() As Byte)
End Function
当 Visual Studio 直接引用此 dll 文件(不使用 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 类型?我在网上找不到任何文章。
感谢您的帮助!
I am referencing a COM dll file using CodeDom. The function within the dll file has parameters as follows:
Public Function Foo(fooString As String, fooByte() As Byte)
End Function
When this dll file is referenced directly by Visual Studio (Not using CodeDom), I call this function as follows - and the solution builds with no problems:
Byte[] b = File.ReadAllBytes("Test.exe");
DllName.DllClass dll_obj_reference = new DllName.DllClass();
dll_obj_reference.Foo("data", b);
NOTE:
Although I am sending a byte array to the function (as requested by VB6), Visual Studio is actually asking for type System.Array
. For whatever reason, the solution still builds fine, and I am able to call the function Foo
with no problems at all.
However, I am not so lucky when doing this all through CodeDom. I add the interop.DllName as a reference to the generated project, and I call just the same way. This time, though, CodeDom spits back an error saying that it cannot convert type byte[] to type ref System.Array.
So, my question - finally:
How can I convert the byte array shown above to type System.Array? I cannot find any articles online.
Thank you for any help!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果它想要一个通过引用传递的数组,你会这样做:
If it wants an array passed by reference, you'd do:
您可以将字节数组转换为 System.Array
You can cast byte array to System.Array