检查对象类型

时间:2016-07-26 09:23:18

标签: axapta microsoft-dynamics dynamics-ax-2012 x++ dynamics-ax-2012-r3

我正在使用C#应用程序做一些工作,并通过服务将结果发回AX。

我在AX中创建了一些类,并在C#中使用它们的实例,然后在经典数组的帮助下将对象发回。

在AX中,我收到了System.Collections.ArrayList中的内容,这是我的问题:

如何迭代此集合并检查对象类型?

for (...)
{
   if (arr[i] is SalesLineCSharp) 
   {
   } 
   else if (arr[i] is SalesTableCSharp)
   {
   }
   //etc....
}

isas

之类的东西

我刚刚做了一个例子并尝试了这个......

info(strFmt("%1", classId2Name(classIdGet(arr.get_Item(i)))));

对于自定义类型,我得到了类的名称,对于字符串和整数,我得到了CLRObject,但这看起来很糟糕。

有没有更简洁的方法来实现这一目标?

1 个答案:

答案 0 :(得分:4)

从AX 2012开始,实际上有X ++中的强制转换操作符 - 请参阅MSDN上的here

所以你应该可以做一些像

这样的事情
Object tmpItem;
...
tmpItem = arr.get_Item(i);
if (tmpItem is SalesLineCSharp)
{
    ...