【问题标题】:What's the best way to use .NET classes from Visual Basic 6?使用 Visual Basic 6 中的 .NET 类的最佳方式是什么?
【发布时间】:2008-12-18 22:52:59
【问题描述】:

在我的工作场所,我坚持使用 Visual Basic 6,但在阅读了 “How do I sort arrays using vbscript?”我抱有希望,至少一些缺少的 VB6 功能可以通过 .NET 功能进行补充。 (主要是不同种类的收藏)

看来,至少有一些 .NET 类可用于编写脚本,并且可以从 VB6 到 CreateObject 使用。但我有一种明显的好到真实的感觉,所以......

  • 我可能会遇到什么陷阱吗? (除此之外必须安装 .NET)
  • 是否所有 .NET 类都可以通过 CreateObject 获得?
  • 有什么方法可以将这些类导入到我的 VB6 项目中,这样我就可以拥有 IntelliSense 了吗?
  • 您对这种方法有什么一般性建议吗?

【问题讨论】:

标签: .net vb6 scripting


【解决方案1】:

VB Fusion Developer Center on MSDN 提供大量信息。特别感兴趣的是Using the .NET Framework Class Library from Visual Basic 6Can I Interest You in 5000 Classes?

您需要在 .NET 中编写一些代码才能使用文章中描述的技术。如果您还没有 Visual Studio 2008,可以免费下载Visual Basic 2008 Express

【讨论】:

    【解决方案2】:

    从我公司的 CAD/CAM 应用程序的转换工作开始。我不建议自下而上,即替换核心 DLL 或通过 .NET 添加核心功能。

    通过替换表单并逐步进入核心 DLL,我从自上而下的工作中获得了更好的结果。

    最大的障碍是提供合适的打印机和图形界面。但是微软发布的打印机兼容工具包解决了这两个问题。幸运的是,当 .NET 刚刚出现时,我将所有以 VB6 为中心的图形和打印调用都放在了一个接口后面。

    再次开始,将格式替换为调用您的 COMM 核心库的 .NET 程序集。

    如果您的逻辑与表单交织在一起,我强烈建议您在 VISUAL BASIC SIX 中将其分离到一个新的 COM DLL 中。让新的 DLL 通过接口与窗体交互。该表单将是一个薄壳,将事件传递给 DLL 并执行各种操作(绘图、重新排列等。

    如果您无法避免使用 .NET 程序集来提供新功能,那么请创建一系列定义良好且有限的接口来控制 .NET 端和 VB6/COM 端之间的交互。

    例如,我们希望将我们行业的办公/工作管理软件添加到我们销售的软件范围中。我们决定使用 .NET 框架来实现。它必须与我们的 CAD/CAM 软件交互,因此我们创建了一系列界面,每个界面都可以从中提取所需的信息或触发操作。

    最后,如果 .NET 类实现了 COM 接口,最大的问题是您需要确保作为 COM 中属性一部分的任何参数都必须声明为 ByVal,否则 .NET 将无法实现该属性并无法实现实现接口。这包括 Let 或 Set 的 value 参数

    【讨论】:

      【解决方案3】:

      也许this 有帮助:

      通过使用可用信息,在 MS .NET mscorlib.dll 中找到的许多类已在 Visual Basic 6 中重现。这不是 CLI 运行时的实现,只是 mscorlib 中的一些 unitlity 类.dll 库文件。

      【讨论】:

        【解决方案4】:

        您应该只使用互操作作为在系统之间推送数据的机制——而不是核心逻辑代码;所有编组等的性能影响太大了。我建议你看看在 VS2008 等中使用更新的 VB 变体。这是一个很大的转变,但如果你有能力做出改变,你不会后悔的。

        就个人而言,当我从 VB6 迁移到 C# 时,我必须根据本地上下文等做出决定。

        【讨论】:

        • 随心所欲地投反对票,但是使用 .NET 集合等作为 VB6 的例程真的不是一个好主意。
        猜你喜欢
        • 1970-01-01
        • 2011-05-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多