检查对象类型

Check objects type

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

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

在 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)))));

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

是否有更简洁的方法来完成此操作?

从 AX 2012 开始,X++ 中实际上有转换运算符 - 请参阅 MSDN 上的 here

所以你应该可以做类似

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