Получить карту (Типы: Строка, Типы: Строка) в приложении.Net

В 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 нулевой. Зачем?

Можно ли получить сложный тип данных из AX на стороне.Net?

2 ответа

Извините но Map в X++ это не то же самое, что Dictionary в C#.

Вы можете использовать карту, хотя:

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

Затем назовите карту с:

String val = map.call("lookup", "key");

Полный код, чтобы сделать это (получить словарь):

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;
Другие вопросы по тегам