从Visual Basic 6使用.NET类的最佳方法是什么?

时间:2008-12-18 07:43:54

标签: .net vb6 scripting

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

似乎至少有一些.NET类可用于编写脚本,可以从VB6到CreateObject使用。但是我得到了一种与众不同的感觉,所以...

  • 我可能会遇到任何陷阱吗? (除了必须安装.NET)
  • 是否所有.NET类都可通过CreateObject
  • 获得
  • 有没有办法将这些类导入我的VB6项目,所以我可以使用IntelliSense?
  • 您对此方法有任何一般性建议吗?

4 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:2)

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

从顶部开始,我有更好的结果,从替换表单开始,然后进入Core DLL。

最大的障碍是提供合适的打印机和图形界面。但微软发布的打印机兼容性套件解决了这两个问题。幸运的是,当.NET在地平线上闪烁时,我将所有以VB6为中心的图形和打印调用放在界面后面。

再次首先用调用COMM核心库的.NET程序集替换格式。

如果您的逻辑与表单交织在一起,我强烈建议将其分成一个新的COM DLL IN VISUAL BASIC SIX。让新DLL通过接口与Form进行交互。该表单将是一个瘦shell,将事件传递给DLL并执行各种操作(绘图,重新排列等)。

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

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

最后,如果.NET类实现了COM接口,那么最重要的是你需要确保必须声明属于COM属性的任何参数ByVal或.NET将无法实现该属性并且无法实现界面。这包括Let或Set

的value参数

答案 2 :(得分:1)

也许this有帮助:

  

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

答案 3 :(得分:0)

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

就个人而言,当我从VB6迁移到切换到C#时,该决定必须基于本地环境等。