检查对象类型
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....
}
类似于 is
或 as
?
我刚刚做了一个例子并尝试了这个..
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)
{
...
我正在使用 C# 应用程序做一些工作并通过服务在 AX 中发回结果。
我在 AX 中创建了一些 classes 并在 C# 中使用它们的实例,然后我在 classic 数组的帮助下将对象发回。
在 AX 中,我收到 System.Collections.ArrayList
中的东西,我的问题是:
如何遍历此集合并检查对象类型?
for (...)
{
if (arr[i] is SalesLineCSharp)
{
}
else if (arr[i] is SalesTableCSharp)
{
}
//etc....
}
类似于 is
或 as
?
我刚刚做了一个例子并尝试了这个..
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)
{
...