1

テーブルからすべての表示メソッドをキャッシュに入れる必要があるため、手動で入力する代わりに (表示メソッドがたくさんあります)、動的に実行しようとしました。つまり、テーブルのすべてのメソッドを参照してから、それが表示であるかどうかを確認します。メソッドを使用してフォーム データソースを取得tablemethodstr()し、キャッシュに入れます。cacheAddMethod()

ただし、属性を使用してメソッドをフィルター処理する方法が見つからなかったので、純粋な X++ を使用して AX 2009 でフィルター処理を行うことさえ可能かどうか疑問に思っていました。

乾杯

4

1 に答える 1

2

必要なものを手に入れるのに役立つかもしれない仕事を書きました。質問については完全にはわかりませんが、これを実行できるはずです:

static void Job46(Args _args)
{
    DictTable       dictTable;
    int             i;
    MethodInfo      methodInfo;
    SysDictTable    dt = new sysDictTable(tableNum(Address));
    ;

    dictTable = new dictTable(TableNum(Address));

    for (i=1; i<dt.objectMethodCnt(); i++)
    {
        methodInfo = dt.objectMethodObject(i);

        if (methodInfo.displayType() == DisplayFunctionType::Get)
            info(strfmt("Found Display: %1 - %2 - %3", methodInfo.displayType(), enum2str(methodInfo.returnType()), methodInfo.name()));
        else
            info(strfmt("Not Display: %1 - %2 - %3", methodInfo.displayType(), enum2str(methodInfo.returnType()), methodInfo.name()));
    }
}

注目すべきは、「methodInfo.displayType() == DisplayFunctionType::Get」です。

編集:「<」の代わりに「<=」が必要な場合があります...テストしていません。あなたはそれを理解するでしょう。

于 2012-06-04T19:21:48.477 に答える