我有一个较旧的VB6项目,我正在尝试添加单元测试.我通过模拟对象打破了类中的依赖关系.一切都很顺利,直到我发现了一些引发事件的依赖,现在我已经碰壁了.
这是一个我正在努力做的事情的一个简单例子:
ITab.cls:
Option Explicit
Public Event Click(tabNumber As Integer)
Public Sub SomeOtherFunction()
End Sub
Run Code Online (Sandbox Code Playgroud)
clsRealTab.cls:
Option Explicit
Implements ITab
Public Event Click(tabNumber As Integer)
Public Sub ITab_SomeOtherFunction()
'code here'
End Sub
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
有没有人知道是否有办法让这项工作或其他方式来处理这种情况?
我实现了一个我调用的回调接口ITabEventsHandler.它看起来像这样:
Option Explicit
Public Sub Click(intPreviousTab As Integer, objSSTab As Object)
End Sub
Run Code Online (Sandbox Code Playgroud)
然后我添加Implements ITabEventsHandler到我的表单并将表单作为ITabEventsHandler参数传递给我的clsTab初始化程序.Click(...)我可以打电话,而不是提出自定义事件mTabEventsHandler.Click(...).
谢谢你的建议!
wqw*_*wqw 10
你根本无法在VB6中"实现"源接口.所以简短的回答是"不,你不能这样做".您可以使用直接类型库编辑来破解它,但这会很快变得难看.
如果必须通过不同的(模拟)类"实现"这些接口,则可以考虑使用回调接口.