【发布时间】:2012-08-26 06:25:51
【问题描述】:
我的目标是执行带有绑定的 groovy 脚本,其中函数是预定义的,并且拦截器会注销执行时间和闭包评估的结果。我的示例代码是:
binding.login = { ->
binding.event.appname=='login'
} def gse = new GroovyScriptEngine("src/main/resources/rules")
gse.run('DSL.groovy', binding)
在我的脚本中,我正在调用登录方法。一切正常,除了我不知道如何使用 MetaClass 拦截它。我的尝试像
Binding.metaClass.invokeMethod = { String name, args ->
println ("Call to $name intercepted... ")
没用。后来我发现闭包是绑定的属性,而不是方法。 在这种情况下有什么方法可以执行拦截以及如何执行?元类的正确对象是什么?值得注意的是,我的闭包在另一个嵌套闭包中执行。 谢谢
【问题讨论】:
-
您尝试过 getProperty 吗? groovy.codehaus.org/Using+invokeMethod+and+getProperty
标签: binding groovy closures metaclass