C# 4.0 如何使用COM互操作从VB6使用结构?

C# 4.0 如何使用COM互操作从VB6使用结构?,c#-4.0,vb6,com-interop,C# 4.0,Vb6,Com Interop,下面是一个场景: 我有一个VB6项目。它包含一个通过ref接收variant类型参数的方法 Function GetFilledInfo(data As Variant) 此方法使用结构填充接收的参数。此结构在我的VB6项目中定义如下 Public Type DATASTRUCTMAIN structChild As DATASTRUCTCHILD End Type Public Type DATASTRUCTCHILD m_bComputeRanges As Long End

下面是一个场景:

我有一个VB6项目。它包含一个通过ref接收variant类型参数的方法

Function GetFilledInfo(data As Variant)
此方法使用结构填充接收的参数。此结构在我的VB6项目中定义如下

Public Type DATASTRUCTMAIN
   structChild As DATASTRUCTCHILD
End Type

Public Type DATASTRUCTCHILD
   m_bComputeRanges As Long
End Type
我有一个C#程序,它通过引用VB6项目生成的ActiveX dll来调用此方法

我想在我的C#程序中声明VB6中定义的结构,并想使用VB6方法填充它

我该怎么做


提前感谢。

我忍不住注意到您只传递了一个Long(除非您为了简洁起见截断了这些结构定义)。在这种情况下,只需更改VB6,使其公开一个返回Long

如果你有一个真正的结构

将结构定义移动到VB6项目中的公共类。然后,结构定义将通过COM向引用VB6项目的任何客户端公开

希望您能够在C#项目中使用它,并且能够声明该结构的实例。在C#项目的项目引用中确实有对VB6组件的引用,对吗?不太熟悉.Net COM互操作,因此对此不太确定

如果在C#项目中声明该结构的实例时遇到任何问题,可以将VB6结构更改为类吗