在AX2009中,我有一个方法返回Map的类。
在С#中,我有null:
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获取复杂数据类型吗?
发布于 2012-10-04 18:46:44
抱歉,X++中的Map与C#中的Dictionary不是一回事。
不过,您可以使用地图:
AxaptaObject map = ax.Call("getMapData",1);然后使用以下命令调用地图:
String val = map.call("lookup", "key");发布于 2012-10-05 13:28:15
完成此操作的完整代码(获取字典):
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;https://stackoverflow.com/questions/12725389
复制相似问题