2

我正在使用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,但是這看起來那麼糟糕。

有沒有更簡單的方法來實現這個目標?

回答

4

從AX 2012開始,實際上在X ++中有鑄造操作符 - 請參閱MSDN上的here

所以,你應該能夠做到像

Object tmpItem; 
... 
tmpItem = arr.get_Item(i); 
if (tmpItem is SalesLineCSharp) 
{ 
    ... 
+0

我想,張貼問題,我得到了以下錯誤之前:類型get_Item必須指定一個兼容類,接口,或表。我真的不知道如何處理這個信息。 –

+0

如果將get_Item的返回值分配給類型爲「Object」的中間變量並使用此var檢查類型,會發生什麼情況。也許是汽車。 .NET和X ++類型之間的編組無法直接處理 – DAXaholic

+0

是的,這是有效的。非常感謝! –