这是场景:
我有一个 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 项目中的公共(public)类。然后,结构定义将通过 COM 公开提供给任何引用您的 VB6 项目的客户。
希望您将能够在您的 C# 项目中使用它,并且您将能够声明该结构的实例。您确实在 C# 项目的项目引用中引用了 VB6 组件,对吗?不太熟悉 .Net COM 互操作,所以对此不确定。
如果您在 C# 项目中声明结构的实例有任何问题,您可以将 VB6 结构更改为一个类吗? Apparently structures can be problematic in COM interop
关于c#-4.0 - 如何通过 COM 互操作使用 VB6 中的结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13069574/