c#-4.0 - 如何通过 COM 互操作使用 VB6 中的结构?

标签 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 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/

相关文章:

vb6 - 使用 WiX 安装 VB6 二进制文件

mysql - 连接vb6到mysql :[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

xml - 使用 C# 在 XML 文件中查找和替换文本

xpath - 如何在VB6中将串联字符串评估为索引XPath表达式

c# - 通过 COM4J 从 .NET 方法返回接口(interface)数组

c++ - CoCreateInstance 返回 E_NOINTERFACE 即使找到接口(interface)

c# - 在 C# 中创建 IStream 对象

c# - 寻找一种干净的方法将字符串列表转换为 C# 中的有效 List<long>

.net - 如何使用 log4net 登录 RichTextBox?

c# - 如何在 where 和 select 语句中的 ef 查询中使用子字符串