intersystems-cache - 访问缓存 Objectscript 中的实例变量
问题描述
我有一个例程,我使用反射动态实例化持久对象。当我尝试使用反射 ($Property) 对其进行实例化时,该对象的属性之一(也是持久对象)失败。它失败,因为该属性已从数据库中删除。这是有道理的,但我似乎无法获得该属性的 ID (23)。当我 ZWrite 对象时,我可以在打印输出中看到属性 id。
+----------------- swizzled references ---------------
| i%PropID = 23
| r%PropID = ""
我无法弄清楚如何访问 i%ProdID 值。如果有人可以提供帮助,我将不胜感激。
我正在使用递归来获取对象的属性和每个属性的后续属性(如果它们具有持久性)等等,但是如果属性实际上没有持久化(以某种方式被删除),我仍然想获取 id . 我曾考虑过使用 sql,但如果可能的话,我想远离它。
解决方案
i%<PropertyName>
以及访问此属性的原始数据的r%<PropertyName>
特殊语法。如果要获取此属性的值,则必须使用原始属性名称PropID
。
要获取特定类的属性列表,您可以使用 classes%Dictionary.ClassDefinition
和%Dictionary.PropertyDefinition
,以任何您可能感兴趣的方式以编程方式阅读类的完整定义并做任何您想做的事情。
推荐阅读
- python - 尝试在python中使用shutil复制文件的错误代码
- visual-studio - 来自sdk的flutter_localizations依赖于intl 0.17.0,fstore依赖于intl ^0.16.1,来自sdk的flutter_localizations是被禁止的
- python - 如何在 Python 中连接到 FTP 服务器?
- html - 制作表格单元格(不是 3x3、2x4!)正方形?
- c# - 说出语音命令时保持玩家移动
- vue.js - vuetify断点未定义,TypeError:无法读取未定义的属性“xsOnly”
- javascript - React 检测到 Hooks 的调用顺序发生了变化,但我看不到任何有条件调用的 hooks
- python - 在块样式 yaml 文件 (ruamel.yaml) 中将来自 Python 的列表显示为流样式
- c# - 如何避免 MailKit 更改 text/plain 和 text/html 部分的传输编码?
- c++ - 从存储的类引用中调用方法