反射 Inside Dynamics AX 4.0 14章 读书笔记
2009-12-17 17:14
489 查看
反射是编程时对应用程序模型的发现机制,可以理解为程序员利用代码来了解应用程序数据模型的定义及具体内容的一种机制。
这一机制包括:X++提供很多系统函数或方法、三种反射API。
其中系统函数和方法包括:
反射API包括:
内部方法介绍了:
<ElementKind>str: 返回某一元素的名字,如classStr, fieldStr
<ElementKind>Num:返回某一元素的ID,如classNum,fieldNum
identifierStr:
literalStr: 该方法将参数转换为字符串,即使是Label也不会进行对应的转换,如literalStr(@sys1)返回@sys1,而不会将@sys1转换为对应的字符串
TypeOf系统方法:
Typeof(parameter)返回Types的枚举值
ClassIdGet系统方法:
ClassIdGet(parameter)返回实例parameter对应的类ID。
但是,如果有一个父类Base,然后有一个子类Client继承自Base,那么Client的实例使用classIdGet返回的将是client类的ID,这样,判断一个变量其类是否继承自另一个类会比较麻烦。所以4.0系统提供了SysDictClass::as方法。
SysDictClass::as(instance,classnum(class)),如果instance是class或其子类的实例,就返回该实例,否则返回NULL
Table data包括:
UtilElements和UtilIdElements的不同在于UtilIdElements包含了Id信息。
为了方便操作这些表,系统提供了以x开头的类:x<TableName>,如xUtilElements
Dictionary包括:
利用Dictionary可以判断一个元素是否存在,而获取该元素更详细的信息,则要使用DictClass类。而为了获得更多的信息,系统在应用程序一级提供了对应的类SysDict<ElementKink>,它们都继承自各自在系统一级的类,如SysDictClass继承自DictClass。
系统同时也提供了DictField和SysDictField类来获取有关字段的信息。
Treenodes的内容包含:
使用TreeNode来操作节点。
通过代码修改TreeNode后需要使用TreeNodeRelase方法来是否缓存并重新加载,以确保修改能被及时反映。
关于TreeNode如何使用可以参考类SysBpCheck.
这一机制包括:X++提供很多系统函数或方法、三种反射API。
其中系统函数和方法包括:
内部方法 | 一组可以获取元素名字和ID的方法,并在编译时进行安全检验 |
TypeOf系统方法 | 返回变量的元素数据类型 |
ClassIdGet系统方法 | 返回一个实例所属类的ID |
Table data | 一组保护所以元素定义的表。它允许开发人员以表达形式直接访问aod文件中的内容,可以用于判断一个元素是否存在,并获取它的一些属性,包括元素的创建人、创建时间、创建日期等。 |
Dictionary | 一组类型安全的类,用于从对象模型中读取元数据,而且是只读的。 |
Treenodes | 一个类的层次关系模型,提供了操作AOT节点的API,可以用来创建、读取、修改和删除AOT上的元数据或代码。它可以告诉节点的详细信息。 |
<ElementKind>str: 返回某一元素的名字,如classStr, fieldStr
<ElementKind>Num:返回某一元素的ID,如classNum,fieldNum
identifierStr:
literalStr: 该方法将参数转换为字符串,即使是Label也不会进行对应的转换,如literalStr(@sys1)返回@sys1,而不会将@sys1转换为对应的字符串
TypeOf系统方法:
Typeof(parameter)返回Types的枚举值
ClassIdGet系统方法:
ClassIdGet(parameter)返回实例parameter对应的类ID。
但是,如果有一个父类Base,然后有一个子类Client继承自Base,那么Client的实例使用classIdGet返回的将是client类的ID,这样,判断一个变量其类是否继承自另一个类会比较麻烦。所以4.0系统提供了SysDictClass::as方法。
SysDictClass::as(instance,classnum(class)),如果instance是class或其子类的实例,就返回该实例,否则返回NULL
Table data包括:
Table names | Description |
UtilElements UtilIdElements | 表包含了.aod文件中的元素 |
UtilElementsOld UtilIdElementsOld | 表包含了旧的应用程序文件夹中.aod文件中的内容,在代码更新时有用 |
UtilApplHelp | 表包含了.ahd文件的内容,是提供给最终用户的帮助信息 |
UtilApplCodeDoc | 表包含了.add文件的内容,包含了开发人员对所有元素的注释 |
UtilCodeDoc | 表包含了.khd文件的内容,包含了AX系统API对应开发人员的稳定信息 |
为了方便操作这些表,系统提供了以x开头的类:x<TableName>,如xUtilElements
Dictionary包括:
利用Dictionary可以判断一个元素是否存在,而获取该元素更详细的信息,则要使用DictClass类。而为了获得更多的信息,系统在应用程序一级提供了对应的类SysDict<ElementKink>,它们都继承自各自在系统一级的类,如SysDictClass继承自DictClass。
系统同时也提供了DictField和SysDictField类来获取有关字段的信息。
Treenodes的内容包含:
使用TreeNode来操作节点。
通过代码修改TreeNode后需要使用TreeNodeRelase方法来是否缓存并重新加载,以确保修改能被及时反映。
关于TreeNode如何使用可以参考类SysBpCheck.
相关文章推荐
- 公司标识 Inside Dynamics AX 4.0 Company Identifiers
- Inside Microsoft Dynamics AX 4.0 下载
- Inside.Microsoft.Dynamics.AX.4.0
- [eBook]Inside Microsoft Dynamics AX 2012 R3发布
- How to Setup Alerts in Dynamics Ax 4.0 & 2009
- Inside Dynamics Axapta4.0出版了
- Automatic creation of a PDF from a customer invoice in Dynamics Ax 4.0
- Inside Microsoft Dynamics AX 2009, 2nd Edition 已出版
- .net 4.0面向对象编程漫谈(基础篇) 读书笔记 一
- 配置Dynamics AX 2012 R3 Reporting Services 小结
- Microsoft Dynamics AX 2012 安装指南
- Microsoft Dynamics AX 2012 Technical Library
- DEMO: Microsoft Dynamics AX 2009 库存批号追踪
- Send email from dynamics ax
- Microsoft Dynamics AX 4.1 for MOSS 安装实战录(Action1)
- 《inside the c++ object model》读书笔记 之四 Function 语意学
- Chapter 5:UIKit Dynamics - iOS 8 Swift Programming cookBook 读书笔记
- SSDT修改Dynamics AX SSAS Cube之后如何更新到AOT
- 微软ERP Dynamics AX 20年简史
- 《统计学》读书笔记,第11-14章