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)类“实现”这些,你可以考虑你的情况下的回调接口. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |