0

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

        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 动态返回列表时,我需要在 C# 中做什么AxpataObject

4

1 回答 1

2

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

它当然不会返回一个ArrayList但很可能是一个 AX List,并且两者不一样并且不能被强制转换。

一种方法是让 AX 返回一个容器,然后访问它

否则,您可以使用AxaptaObjectList直接访问 AX

AxpataObject ax_cont = ax.CallStaticClassMethod("Code_Generator", "tableNames");
AxpataObject ax_it = ax_cont.Call("getEnumerator");
while (ax_it.Call("moveNext"))
     // Hope you get it
于 2013-01-24T08:25:47.010 回答