【发布时间】:2014-06-12 05:02:16
【问题描述】:
我最近尝试将旧版 VB6 应用程序移植到 .NET。然而,它不是一个完整的端口,因为我只关注应用层。我仍然会使用一些 VB6 COM 组件。
到目前为止一切顺利,但我最近碰壁了。
我需要将自定义集合从 .NET 传递到 VB6。这可能吗?
我在 .NET 端调用的 COM 方法需要一个通用对象,但应用程序立即崩溃:InvalidCastException - 指定的转换无效。
我偶然发现了几篇文章,它们暗示了如何将 VB6 集合传递给 .NET,但反之则不然。我尝试在 .NET 中继承/利用几种不同的集合类型,但到目前为止都无济于事。任何帮助表示赞赏。
【问题讨论】:
-
@MarkJ 我看了那个问题,它似乎不是重复的。有一种方法可以让 VB6 相信它看到了 VBA.Collection,我在回答中对其进行了描述。也适用于 C#。
-
这就是问题不同的原因——我相信@RyanMac 希望为他正在与之交谈的 VB6 组件保留二进制兼容性,可能还有二进制文件本身。 6231995 的问题和答案似乎不希望保持兼容性。
-
@Markus - 你是对的。这正是我想要做的。现在正在尝试您的实施,谢谢。
-
@MarkJ 请撤消此问题的“标记为重复”。 “从 VB6 访问 .NET 集合”与“使用 .NET 创建 VBA.Collection”不是同一个问题。