vb6 – 全局函数是否有CallByName等价物?
发布时间:2020-12-17 07:29:34 所属栏目:百科 来源:网络整理
导读:我想这样做:“如果有一个模块X包含一个函数Y,那么就调用它,否则不要.” 我知道我可以使用CallByName(Object,MethodName,…)来调用对象实例的方法或属性. 是否可以调用未绑定到对象的全局子/函数? //Module1Public Sub DoSomethingEnd Sub//Module2Public S
我想这样做:“如果有一个模块X包含一个函数Y,那么就调用它,否则不要.”
我知道我可以使用CallByName(Object,MethodName,…)来调用对象实例的方法或属性. 是否可以调用未绑定到对象的全局子/函数? //Module1 Public Sub DoSomething End Sub //Module2 Public Sub TriggerDoSomething On Error Resume Next CallByName2 "Module1","DoSomething",... End Sub 我知道,最好重构我的代码将DoSomething包装成一个类,但目前这是不可能的,因为它会以几个小时内无法修复的方式破坏我的同事的代码. 解决方法
CallByName实际上会更容易一个类 – 你不能只用一个重定向调用模块的类来包装模块吗?
可以使用FunctionDelegator按名称调用模块中的例程.这在Matt Curland的优秀着作Advanced Visual Basic 6中有所解释. 谷歌搜索可能会找到一些使用CallWindowProc的黑客攻击,但是Matt Curland说这很危险.这几乎是关于此问题的最后一句话:) 编辑:RS康利的答案不使用模块,使用具有GlobalMultiUse的实例属性的类,您将能够使用CallByName.如果您的代码在DLL而不是EXE中,这将有效. RS Conley建议,在任何情况下,使用DLL中几乎所有功能的最小EXE都会更灵活:这可能是真的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |