在运行时

时间:2017-02-08 20:36:27

标签: intersystems-cache objectscript intersystems-ensemble

我正在尝试从表中检索存储的函数,并在运行时执行它们。 Ex MyTableFieldValue包含:

$PARAMETER(MyClass,MyParameterName) 

其中MyTableFieldValue是名为MyTable的表中的字段值。 MyClass类中的MyParameterName值实际上是" ThisParameter"

我想这样做:

Set parameterName = MyTableFieldValue 

其中parameterName应包含" ThisParameter"。

相反它包含

$PARAMETER(MyClass,MyParameterName).

如何强制缓存实际评估MyTableFieldValue中的内容?

1 个答案:

答案 0 :(得分:3)

如果表中的数据不是用户可编辑的,您可以使用间接来计算您的值,如文档中所述

http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GCOS_operators#GCOS_operators_indirection_arg

在您的示例中,它看起来像

Set @("parameterName = "_MyTableFieldValue)

但是,如果用户可以更改表中的数据,这是不安全的,因为他们可以通过这种方式执行几乎任何代码。在这种情况下,您应该解析字符串,找到您的类名和参数名,并显式运行$ parameter函数调用。