intersystems-cache - Intersystems caché - 以编程方式创建新类

标签 intersystems-cache objectscript

是否可以编写 ObjectScript 方法,该方法将在命名空间中创建新类并编译它?我的意思是以编程方式创建新类并存储它。如果是这样,我可以稍后使用 ObjectScript 编辑此类(并重新编译)吗?

原因:我在字符串变量中定义了类结构,我需要根据此字符串将新类添加到命名空间。

最佳答案

没有什么是不可能的。 Caché 中的所有内容都可以通过编程方式创建。并且,类不是执行。至少有两种方法可以做到这一点:

  • 简单的 SQL 查询 CREATE TABLE ,将创建一个类。
  • 正如您已经提到的 ObjectScript 代码,它可以做到这一点。

在其他类中定义的任何类的所有定义。您可以在包 %Dictionary 中找到它。
该类本身在 %Dictionary 中定义。 ClassDefinition 。它有一些属性,用于定义类的任何部分。因此,这是一段简单的代码,它创建了一些具有一个属性的类。

set clsDef=##class(%Dictionary.ClassDefinition).%New()
set clsDef.Name="package.classname"
set clsDef.Super="%Persistent"

set propDef=##class(%Dictionary.PropertyDefinition).%New()
set propDef.Name="SomeProperty"
set propDef.Type="%String"

do clsDef.Properties.Insert(propDef)

do clsDef.%Save()

在最新版本中,还有一种创建/更改类的方法。如果您有类文本,您可以在 Studio 中看到它。然后,您可以将其加载到 Caché 中,类为 %Compiler.UDL.TextServices

关于intersystems-cache - Intersystems caché - 以编程方式创建新类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28607416/

相关文章:

intersystems-cache - 测试 Intersystems Caché 的数据生成器?

intersystems-cache - 系统间缓存 : Embed SQL always returns only first row

intersystems-cache - 更新由向导基于类生成的表单

objectscript - 该方法中的那些元素是什么?

javascript - 缓存服务器页面 (CSP) 中的缓存变量作用域

linux - 如何从 Shell 脚本中停止 CACHE 实例

c# - 通过 ODBC 查询系统间缓存

objectscript - 一个通过自定义 getter 进行计算、SqlCompulated 的属性,全部同时进行 : what has the priority?

intersystems-cache - 在运行时执行存储的函数