我有返回字典的C#类和方法。我可以在Axapta中创建此类的实例,调用此方法并将集合返回给Axapta,但是我无法遍历此集合并获取其键和值。

这是我的Axapta代码:

ClrObject  obj;
;
obj = document.findText("some"); // returns Dictionary<string, string>
length = obj.get_Count(); // returns 5 (fine!)
obj.MoveNext(); // doesn't works

for (i = 0; i < length; i++ )
{
   obj.get_Key(i);  // doesn't work
}


是在Axapta中迭代Dictionary的一种方法吗?

最佳答案

字典上既没有get_Key也没有MoveNext方法。

MoveNext必须在枚举器上调用。也就是说,您可以通过在字典上调用GetEnumerator然后使用它来检索一个:

System.Collections.Specialized.StringDictionary dotNetStringDict;
System.Collections.IEnumerator dotNetEnumerator;
System.Collections.DictionaryEntry dotNetDictEntry;
str tempValue;
;

dotNetStringDict = new System.Collections.Specialized.StringDictionary();
dotNetStringDict.Add("Key_1", "Value_1");
dotNetStringDict.Add("Key_2", "Value_2");
dotNetStringDict.Add("Key_3", "Value_3");

dotNetEnumerator = dotNetStringDict.GetEnumerator();
while (dotNetEnumerator.MoveNext())
{
    dotNetDictEntry = dotNetEnumerator.get_Current();
    tempValue = dotNetDictEntry.get_Value();
    info(tempValue);
}

10-04 13:30