加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

oop – VB6实现和事件

发布时间:2020-12-17 00:06:59 所属栏目:大数据 来源:网络整理
导读:我有一个旧的VB6项目,我试图添加单元测试.我通过嘲弄对象破坏了类中的依赖.一切都进行得很好,直到我发现一些依靠事件发生,现在我已经打了墙. 这是一个很快的例子,我正在努力做的不工作: ITab.cls: Option ExplicitPublic Event Click(tabNumber As Integer
我有一个旧的VB6项目,我试图添加单元测试.我通过嘲弄对象破坏了类中的依赖.一切都进行得很好,直到我发现一些依靠事件发生,现在我已经打了墙.

这是一个很快的例子,我正在努力做的不工作:

ITab.cls:

Option Explicit

Public Event Click(tabNumber As Integer)

Public Sub SomeOtherFunction()

End Sub

clsRealTab.cls:

Option Explicit
Implements ITab

Public Event Click(tabNumber As Integer)

Public Sub ITab_SomeOtherFunction()
    'code here'
End Sub

frmMain.frm:

Option Explicit

Private WithEvents mTab as ITab

Public Sub Main()
    Set mTab = New clsRealTab 'gives "Object or class does not support the set of events" error'
End Sub

有没有人知道有没有办法做这个工作或另一种方式去处理这种情况?

我实现了一个回调接口,我称之为ITabEventsHandler.看起来像这样:

Option Explicit

Public Sub Click(intPreviousTab As Integer,objSSTab As Object)

End Sub

然后,我将ImabeventsHandler应用到我的表单中,并将表单作为ITabEventsHandler参数传递给我的clsTab初始化程序.而不是提高自定义Click(…)事件,我可以调用mTabEventsHandler.Click(…).

感谢您的建议!

你根本不能在VB6中实现源接口.所以简短的答案是“不,你不能这样做”.你可以用直接的typelib编辑进行攻击,但是这样会很快就会变得丑陋.

如果你必须通过不同的(mock)类“实现”这些,你可以考虑你的情况下的回调接口.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读