我想了解 Infolog 在Dynamics AX中的运作方式。我知道以下代码将在infolog窗口中显示文本。
info(“Hello World!”);
我知道信息是全局类的静态方法,因此只需调用名称即可调用该方法,而无需实际指定 {{ 1}}
在查看 Global 类中的方法 info 时,我注意到它调用了Global::
。右键单击infolog.add
并选择选项add
,即可转到课程信息中的方法添加。
如果添加方法所在的类名为 Info ,那么如何在Lookup Definition
中使用名称 Infolog调用它?
我能得出的唯一合乎逻辑的结论是 Infolog 是类 Info 的别名。如果这是正确的,那么在AOT(应用程序对象树)中定义了这个别名?
我搜索了AOT,但发现了对 Infolog 一词的多个引用,但我找不到任何与应用程序或系统直接相关的内容 class。
答案 0 :(得分:1)
我在Microsoft Dynamics社区论坛上发布的同一问题的回复帮助我更好地理解了代码。
Is Infolog an alias to the class Info? - Response on Microsoft Dynamics Community forum
下面显示的代码来自静态方法Global::info()
。我没注意到使用对象 add
调用方法 infolog
实际上是一个实例方法而不是静态方法。
client server static Exception info(
SysInfoLogStr txt,
URL helpUrl = '',
SysInfoAction _sysInfoAction = null)
{
return infolog.add(Exception::Info,
getPrefix()+txt,
helpUrl,
_sysInfoAction, false);
}
换句话说,infolog
是类Info
的一个实例。在查看课程 Info 后,我找到了startup
方法。我保留了一个断点来调试代码,发现每当打开AX客户端时都会调用此方法。此方法又调用另一个名为initBrowser
的方法。在 initBrowser 中,以下代码似乎使用Windows句柄初始化Infolog的全局实例。
this.initializeInfolog(this.browser().hWnd());
上面的menthod initializeInfolog
存在于System类xInfo
中,它是Info的父类。由于我无法查看类 xInfo ,我认为这是创建名为 Info
的类infolog
的实例的地方。
答案 1 :(得分:1)
我认为这不是别名。我认为这是在内核级别定义的全局变量。
编辑:我在回答时回答了你的问题...