在c#中使用vb.net dll。获得'无效论证'

时间:2011-04-19 08:48:56

标签: c# vb.net dll invalid-argument

有一个奇怪的,我知道它是愚蠢的东西,但我什么都看不到它!

我有一个在VB.net中创建的DLL(不,我不能改变它!:-))并且我从C#调用它。问题来自于在C#中创建对象,我得到的消息是它有“一些无效的参数”。

DLL中的构造函数代码如下:

Sub New(ByRef Connection As IConnection)

C#中的代码是:

IConnection conn = new Connection();  
CustomObject test = new CustomObject(conn)

它对第一行感到满意,但它在第二行给出了错误消息(“一些无效的参数”)。

我还在VB.net中创建了一个辅助项目并调用了DLL,它在那里工作正常。

我做错了什么?

提前致谢,

安迪

2 个答案:

答案 0 :(得分:2)

在C#中,如果参数为“ByRef”,则必须在调用函数

时指定它
CustomObject test = new CustomObject(ref conn);

答案 1 :(得分:0)

我在几天之前遇到了类似的问题,所以我可以帮忙解决这个问题。我是新手,但在我的项目中,我有同样的问题(不是错误)。

是的,您可以在C#.NET项目中使用通过VB.NET构建的DLL。如果你有一个VB.NET DLL,你可以在没有任何C#.NET更改的情况下使用它。但有时,您需要注意platform选项。

.NET中有两个重要的功能:

  1. 编译产生 IL(中间语言)代码。所有.NET语言在编译时生成IL由JIT(即时)编译器编译。

  2. 这些语言都使用通用类型系统(CTS)并在相同的公共语言运行时(CLR)上运行。目标是生成易于互操作的代码。

  3. 所以,DLL不是问题。 你的错误可能是其他的,我不知道。

    希望这有帮助。