我最近注意到VB6中的CallByName关键字.
由于这需要一个对象,过程名称,“调用类型”和参数数组,这可以用来“伪造”某些类型的多态行为吗?
我可以创建2个类,A类和B类,每个类都使用相同的方法Foo,并执行:
Dim list As New Collection Dim instanceA As New ClassA Dim instanceB As New ClassB Dim current As Object Call list.Add(instanceA) Call list.Add(instanceB) For Each current in list Call CallByName(current,"methodName",vbMethod) Next
有人这样做过吗?问题?可怕的想法或天才的想法?启示?意想不到的后果?
解决方法
为什么假多态? VB6以接口的形式具有真正的多态性:
' Interface1.cls ' Sub Foo() End Sub ' --------------------------------------------- ' ' Class1.cls ' Implements Interface1 Private Sub Interface1_Foo() ? "Hello from class 1" End Sub ' --------------------------------------------- ' ' Class2.cls ' Implements Interface1 Private Sub Interface1_Foo() ? "Hello from class 2" End Sub ' --------------------------------------------- ' ' Module1.mod ' Dim x As Interface1 Set x = New Class1 Call x.Foo() Set x = New Class2 Call x.Foo()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。