3

C# アプリケーションを使用して何らかの作業を行い、結果をサービス経由で AX に送り返しています。

AX でいくつかのクラスを作成し、それらのインスタンスを C# で使用してから、従来の配列を使用してオブジェクトを送り返します。

AXで私はaのものを受け取り、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)))));

実際、カスタム型の場合はクラスの名前を取得し、文字列と int の場合は CLRObject を取得しますが、これは見栄えがよくありません。

これを達成するためのよりクリーンな方法はありますか?

4

1 に答える 1

4

実際には、AX 2012 以降の X++ にはキャスト オペレーターがあります。MSDN の こちらを参照してください。

したがって、次のようなことができるはずです

Object tmpItem;
...
tmpItem = arr.get_Item(i);
if (tmpItem is SalesLineCSharp)
{
    ...
于 2016-07-26T09:35:42.123 に答える