我有一个带有方法和接口的.Net对象。 接口期望其中一个参数为long类型 问题是long by vb6不是Long by .net。它的长度不一样,所以我的vb6程序现在无法调用我的.net对象。 我无法破坏.net中的接口以使此更改为int,因为使用它的所有客户端都会受到影响。
有创意吗?
TY
答案 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调用 通过为他们创建包装器。 但是,人工干预将是 必需的。