1

在 AX 2009 中,我有一个方法返回 Map 的类。

在С#中我有空:

using (Axapta Ax = new Axapta())
{
    Ax.Logon(null, null, null, null);
    AxaptaObject ax = Ax.CreateAxaptaObject("SomeClass");
    object obj = ax.Call("getMapData",1);
    Dictionary<String, String> dict = obj as Dictionary<String, String>;

在此代码dict中为空。为什么?

是否可以从 .Net 端的 AX 获取复杂的数据类型?

4

2 回答 2

4

抱歉,MapX++ 中的 aDictionary与 C# 中的 a 不同。

您可以使用地图:

AxaptaObject map = ax.Call("getMapData",1);

然后调用地图:

String val = map.call("lookup", "key");
于 2012-10-04T10:46:43.830 回答
2

完整的代码(获取字典):

Dictionary<String,String> dict = new Dictionary<String,String>();
String key, value;

using (Axapta Ax = new Axapta())
{
    Ax.Logon(null, null, null, null);

    AxaptaObject someClass= Ax.CreateAxaptaObject("SomeClass");

    AxaptaObject map = someClass.Call("getMapData",1) as AxaptaObject;
    AxaptaObject mapIterator = Ax.CreateAxaptaObject("MapIterator", map);

    while ((bool)mapIterator.Call("more"))
    {
            key = mapIterator.Call("key").ToString();
            value = mapIterator.Call("value").ToString();

            dict.Add(key,value);

            mapIterator.Call("next");
    }

}
return dict;
于 2012-10-05T05:28:15.153 回答