将C#列表传递给X++;
在Microsoft Dynamics AX 2012 AOT的C#Project中,我有一个返回列表的方法,我想在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
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;
}