将C#列表传递给X++;

将C#列表传递给X++;,c#,multidimensional-array,axapta,microsoft-dynamics,x++,C#,Multidimensional Array,Axapta,Microsoft Dynamics,X++,在Microsoft Dynamics AX 2012 AOT的C#Project中,我有一个返回列表的方法,我想在X++代码中引用这个方法 我最初的想法是这应该很容易。类似于:List XppProjectList=cSharpGetProjectList.GetStringList()。然而,这并不奏效 在互联网上进行了广泛的研究后,我发现我可以使用System.Collections.ArrayList而不是List,这一次它可以工作,但只能使用一维集合 应该使用C#集合的X++代码: p

在Microsoft Dynamics AX 2012 AOT的C#Project中,我有一个返回列表的方法,我想在X++代码中引用这个方法

我最初的想法是这应该很容易。类似于:
List XppProjectList=cSharpGetProjectList.GetStringList()。然而,这并不奏效

在互联网上进行了广泛的研究后,我发现我可以使用
System.Collections.ArrayList
而不是
List
,这一次它可以工作,但只能使用一维集合

应该使用C#集合的X++代码:

public void GetProjectList()
{
    cSharpGetProjectList = new PS2010Service.CSharpGetProjectList();

    projectList = cSharpGetProjectList.GetStringList();

    length = projectList.get_Count();
    for (i = 0; i < length; i++)
    {
        info(projectList.get_Item(i));
    }
}
C#方法返回多维
ArrayList
,但不起作用

public static List<String> GetStringList()
{
    List<String> list = new List<String>();
    list.Add("One");
    list.Add("Two");
    list.Add("Three");

    return list;
}
public ArrayList GetStringList()
{

    ArrayList list1 = new ArrayList();
    list1.Add("One");
    list1.Add("Two");
    list1.Add("Three");

    ArrayList list2 = new ArrayList();
    list2.Add("1");
    list2.Add("2");
    list2.Add("3");

    ArrayList list = new ArrayList();

    for (int i = 0; i < list1.Count; i++)
    {
        list.Add(new string[] { list1[i].ToString(), list2[i].ToString() });
    }

    return list;
}
public ArrayList GetStringList()
{
ArrayList list1=新的ArrayList();
清单1.添加(“一”);
清单1.添加(“两个”);
清单1.添加(“三”);
ArrayList list2=新的ArrayList();
清单2.添加(“1”);
清单2.添加(“2”);
清单2.添加(“3”);
ArrayList=新建ArrayList();
for(int i=0;i
返回的错误为: Clr互操作封送:不支持的类型。 执行代码时出错:全局(对象),使用无效参数调用了方法信息。 尽管它可以读取此
数组列表的长度并返回3

多维
列表也是如此,我不会在这里发布它来缩短问题

所以我的问题是-如何在X++代码中使用C#的多维列表?谢谢大家!

您从.NET返回的值是带有
string[2]
元素的
ArrayList

代码应该如下所示:

System.Collections.ArrayList result=cSharpGetProjectList.GetStringList();
System.String[]netEmement;
str val1,val2;
int i;
对于(i=0;i
除了for,您还可以使用枚举器:

System.Collections.IEnumerator netEnumerator=result.GetEnumerator();
while(netEnumerator.MoveNext())
{
netEmement=netEnumerator.get_Current();
val1=netEmement.get_项(0);
val2=netEmement.get_项(1);
}
public ArrayList GetStringList()
{

    ArrayList list1 = new ArrayList();
    list1.Add("One");
    list1.Add("Two");
    list1.Add("Three");

    ArrayList list2 = new ArrayList();
    list2.Add("1");
    list2.Add("2");
    list2.Add("3");

    ArrayList list = new ArrayList();

    for (int i = 0; i < list1.Count; i++)
    {
        list.Add(new string[] { list1[i].ToString(), list2[i].ToString() });
    }

    return list;
}