1

AX 2009 では、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では null です。なんで?

.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 に答える