Получить карту (Типы: Строка, Типы: Строка) в приложении.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;