VB6到.Net接口 - 什么是VB6数据类型很长?

时间:2011-01-03 14:47:56

标签: .net interface interop

我有一个带有方法和接口的.Net对象。 接口期望其中一个参数为long类型 问题是long by vb6不是Long by .net。它的长度不一样,所以我的vb6程序现在无法调用我的.net对象。 我无法破坏.net中的接口以使此更改为int,因为使用它的所有客户端都会受到影响。

有创意吗?

TY

2 个答案:

答案 0 :(得分:2)

没有进一步的细节,简短的回答是你将.NET对象包装在另一个中,该对象带有你可以从VB6传递的参数,然后将其转换为long as在现有对象上调用方法时需要。

只有相关程序需要使用包装器/新接口;所有其他系统的现有界面保持不变。

答案 1 :(得分:2)

没有直接的等价物。讨论了你的困境,并在此给出了解决方案:

http://www.thescarms.com/vbasic/vb6vsvbnet.aspx

  

大多数采用数字参数的API   期望32位值。在VB6中,这是一个   长数据类型。在VB.NET中很长一段时间   64位,不适用于32位   API调用。您的.NET API参数   必须改变或投射到   调用之前的整数数据类型   API。

     

许多API将不再可调用   从VB和其他人将有   更换。一些传递字符串   将需要调整以传递正确的   字符串或空值。检查VB.NET   获取更多信息的帮助。

     

需要在案例上处理API   以个案为基础。你最好的选择是   隔离所有API调用以进行更改   只需要在一个单一的   代码中的位置。升级   工具将尝试转换API调用   通过为他们创建包装器。   但是,人工干预将是   必需的。