有没有可能C#在调用具有可选参数的VB6方法时遇到问题?

有没有可能C#在调用具有可选参数的VB6方法时遇到问题?,c#,interface,com,vb6,typelib,C#,Interface,Com,Vb6,Typelib,我向VB6 DLL中的方法添加了3个可选布尔参数。容纳它的类是多用途(public),而方法本身是私有的。该类从TLB实现特定接口,允许对此方法进行公共调用 在VB6端添加了3个可选参数后,我修改了相关的C#代码,以便它指定了3个可选参数。它建得很好。。。但是,当我尝试运行该代码时,它失败并显示以下错误消息: 找不到方法:'Boolean' MyTLBName.IMyClassName.MyMethod(System.Object, System.String、Boolean、Boolean、,

我向VB6 DLL中的方法添加了3个可选布尔参数。容纳它的类是多用途(public),而方法本身是私有的。该类从TLB实现特定接口,允许对此方法进行公共调用

在VB6端添加了3个可选参数后,我修改了相关的C#代码,以便它指定了3个可选参数。它建得很好。。。但是,当我尝试运行该代码时,它失败并显示以下错误消息:

找不到方法:'Boolean' MyTLBName.IMyClassName.MyMethod(System.Object, System.String、Boolean、Boolean、, Int32,Int32 ByRef,System.Object, System.Object,System.Object,Boolean, 布尔型,布尔型

请注意错误消息中如何显示所有3个布尔参数?我觉得很好。。。我知道我在从C#调用方法时指定了这3个布尔值

可疑的是,我在OLEView中查看了MyTLBName.IMyClassName接口,并看到以下内容:

[id(0x60030000)]

同样,3个可选参数是可见的,看起来很好

在我看来,它应该是有效的。。。但也许我错过了什么

我有没有办法不用在TLB中创建另一个版本的“MyMethod”就能让它正常工作?(使用不同的名称,这3个参数是必需的,而不是可选的)

目前,C#在使用可选参数调用VB6函数时确实存在问题。在一个项目中,我非常努力地完成了这个任务,我绝对需要使用外部供应商提供的VB6组件

我发现最简单的解决方案是在VB中创建一个类来调用这些函数,因为VB.Net确实支持可选参数,然后从C#调用该VB6类

在用VB.Net编写的类中,我按照正确的方法重载提供了几个方法来调用一个VB6函数

示例-假设VB6函数有三个参数,第一个是必需的,第二个是可选的,我将在VB.Net组件中创建三个函数

Public Sub CallComponent(byVal myParameter as Integer)
  ....call component with one parm
End Sub

Public Sub CallComponent(byVal myParameter as Integer, byVal parm2 as  String,)
  ....call component with two parms
End Sub
等等


4.0版本中的可选参数似乎已经出现:

技术共和国链接已断开。
Public Sub CallComponent(byVal myParameter as Integer)
  ....call component with one parm
End Sub

Public Sub CallComponent(byVal myParameter as Integer, byVal parm2 as  String,)
  ....call component with two parms
End Sub