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)

https://docs.microsoft.com/en-us/dynamicsax-2012/developer/performing-reflection-with-the-treenode-class

我还想象如果您尝试用注释装饰方法,您将需要使用一些层感知方法。您尝试做的事情听起来很有趣,但有点痛苦。我预计至少需要半天才能正确完成。

感谢您向我发送建议。我实际上刚刚完成了一些代码来获取信息。这是代码,供任何可能感兴趣的人使用:

//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();
    }
}