Dynamics AX 2012:如何通过代码获取特定表单中所有方法的列表?
Dynamics AX 2012: How can I get, by code, a list of all the methods within a specific form?
有什么方法可以让我通过代码获得 Dynamics AX 2012 中给定表单中所有方法的列表?
我正在开发一个小工具,它可以通过使用编辑器 class 在自定义对象的所有方法中插入一些注释。但是,为此,我需要每个方法的完整路径(例如:\Classes\MyClass\CustomMethod),但我根本找不到任何方法来使它适用于 Forms。
提前致谢!
这是一个应该为您指明正确方向的问题,尽管您需要对其进行扩展。
AX2009 Loop through all the controls in the form on init
您可能需要使用的一般主题是 recursion
(https://en.wikipedia.org/wiki/Recursion_(computer_science)), reflection
, and use of the TreeNode
and derivatives of the class to do Tree Node Traversal
(https://en.wikipedia.org/wiki/Tree_traversal)
我还想象如果您尝试用注释装饰方法,您将需要使用一些层感知方法。您尝试做的事情听起来很有趣,但有点痛苦。我预计至少需要半天才能正确完成。
感谢您向我发送建议。我实际上刚刚完成了一些代码来获取信息。这是代码,供任何可能感兴趣的人使用:
//I used the BatchJobHistory form as a test, since I called this static method from a job
public static void findAllChildNodes(str _nodeName = "\Forms\BatchJobHistory", boolean _isMethod = NoYes::No)
{
TreeNode treeNode;
TreeNodeIterator treeNodeIterator;
treeNode methodsNode;
str treePath;
boolean containsMethod;
treeNode = TreeNode::findNode(_nodeName);
treeNodeIterator = treeNode.AOTiterator();
methodsNode = treeNodeIterator.next();
while(methodsNode)
{
treePath = methodsNode.treeNodePath();
containsMethod = strScan(treePath, 'Methods', 1, strLen(treePath));
if (methodsNode.AOTchildNodeCount())
{
//TestClass is the class containing this method
TestClass::findAllChildNodes(treePath, containsMethod);
}
else if (_isMethod)
{
info(strFmt("%1", treePath));
}
methodsNode = treeNodeIterator.next();
}
}
有什么方法可以让我通过代码获得 Dynamics AX 2012 中给定表单中所有方法的列表?
我正在开发一个小工具,它可以通过使用编辑器 class 在自定义对象的所有方法中插入一些注释。但是,为此,我需要每个方法的完整路径(例如:\Classes\MyClass\CustomMethod),但我根本找不到任何方法来使它适用于 Forms。
提前致谢!
这是一个应该为您指明正确方向的问题,尽管您需要对其进行扩展。
AX2009 Loop through all the controls in the form on init
您可能需要使用的一般主题是 recursion
(https://en.wikipedia.org/wiki/Recursion_(computer_science)), reflection
, and use of the TreeNode
and derivatives of the class to do Tree Node Traversal
(https://en.wikipedia.org/wiki/Tree_traversal)
我还想象如果您尝试用注释装饰方法,您将需要使用一些层感知方法。您尝试做的事情听起来很有趣,但有点痛苦。我预计至少需要半天才能正确完成。
感谢您向我发送建议。我实际上刚刚完成了一些代码来获取信息。这是代码,供任何可能感兴趣的人使用:
//I used the BatchJobHistory form as a test, since I called this static method from a job
public static void findAllChildNodes(str _nodeName = "\Forms\BatchJobHistory", boolean _isMethod = NoYes::No)
{
TreeNode treeNode;
TreeNodeIterator treeNodeIterator;
treeNode methodsNode;
str treePath;
boolean containsMethod;
treeNode = TreeNode::findNode(_nodeName);
treeNodeIterator = treeNode.AOTiterator();
methodsNode = treeNodeIterator.next();
while(methodsNode)
{
treePath = methodsNode.treeNodePath();
containsMethod = strScan(treePath, 'Methods', 1, strLen(treePath));
if (methodsNode.AOTchildNodeCount())
{
//TestClass is the class containing this method
TestClass::findAllChildNodes(treePath, containsMethod);
}
else if (_isMethod)
{
info(strFmt("%1", treePath));
}
methodsNode = treeNodeIterator.next();
}
}