首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在.Net应用程序中获取地图(类型:字符串,类型:字符串)

在.Net应用程序中获取地图(类型:字符串,类型:字符串)
EN

Stack Overflow用户
提问于 2012-10-04 18:35:07
回答 2查看 989关注 0票数 1

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

在С#中,我有null:

代码语言:javascript
复制
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获取复杂数据类型吗?

EN

回答 2

Stack Overflow用户

发布于 2012-10-04 18:46:44

抱歉,X++中的Map与C#中的Dictionary不是一回事。

不过,您可以使用地图:

代码语言:javascript
复制
AxaptaObject map = ax.Call("getMapData",1);

然后使用以下命令调用地图:

代码语言:javascript
复制
String val = map.call("lookup", "key");
票数 4
EN

Stack Overflow用户

发布于 2012-10-05 13:28:15

完成此操作的完整代码(获取字典):

代码语言:javascript
复制
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;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12725389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档