【问题标题】:Return a list to .NET Business Connector将列表返回给 .NET Business Connector
【发布时间】:2023-08-07 09:35:01
【问题描述】:

目前,我正在使用以下代码:

        Axapta ax = new Axapta();
        string tableName;
        ArrayList ax_cont = null;
        ax.Logon(null, null, null, null);
        try
        {
            ax_cont = (ArrayList)ax.CallStaticClassMethod("Code_Generator", "tableNames");
            for (int i = 1; i <= ax_cont.Count; i++)
            {
                tableName = ax_cont[i].ToString();
                tablesCB.Items.Add(tableName);
            }    
        }
        catch { }

但我遇到了类型转换异常。

当列表从 ax 动态返回为 AxpataObject 时,我需要在 C# 中做什么?

【问题讨论】:

    标签: c# axapta dynamics-ax-2009 x++ business-connector


    【解决方案1】:

    这取决于Code_generator::tableNames() 返回的内容。

    它肯定不会返回一个ArrayList,但很可能是一个AX List,而且两者不一样,不能强制转换。

    一种方法是让 AX 返回一个容器 then access that

    否则您可以使用AxaptaObject 直接访问AX List

    AxpataObject ax_cont = ax.CallStaticClassMethod("Code_Generator", "tableNames");
    AxpataObject ax_it = ax_cont.Call("getEnumerator");
    while (ax_it.Call("moveNext"))
         // Hope you get it
    

    【讨论】:

    • 我将使用容器。我不想进行太多互操作调用。