2

私はC#アプリケーションを使用して作業を行い、AXを使って結果をサービス経由で返送しています。オブジェクトタイプを確認する

AXでいくつかのクラスを作成し、そのインスタンスをC#で使用した後、古典的な配列の助けを借りてオブジェクトを送り返します。 AXで

私はSystem.Collections.ArrayListで何かを受信して​​、ここでの私の質問が来る:

は、どのように私は、このコレクションを反復処理すると、オブジェクトの種類を確認することができますか?

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

isまたはasような何か?

私はただの例を作り、これを試してみた..私はクラスの名前を取得し、文字列とint型のために、私はCLRObjectを得るが、それはそんなに悪く見えますカスタムタイプのために実際に

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

これを行うにはよりクリーンな方法がありますか?

答えて

4

実際には、AX 2012からX ++でキャスト演算子がキャストされています(MSDNのhereを参照)。型get_Itemは互換性のクラス、インターフェイス、またはテーブルを指定する必要があります。

だから、私は質問を投稿し、私は次のエラーを得たの前にすることを試みた

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

ような何かを行うことができるはず。私は本当にこのメッセージにどのように対処するのか分かりません。 –

+0

get_Itemの戻り値を 'Object'型の中間変数に代入し、このvarを使用して型をチェックするとどうなりますか?多分オート。 .NETとX ++の間のマーシャリングは直接処理できません – DAXaholic

+0

これはうまくいきます。どうもありがとう! –

関連する問題