Através das classes Dict o AX permite que você invoque métodos em runtime. Isto é bastante útil se você quer chamar um método diferente baseado nos dados que recebeu ou qualquer outra condição onde você não sabe o que irá receber.
Exemplo:
1 2 3 4 5 6 7 8 9 10 | static void invokeFindOnCustTable(Args _args) { DictTable dictTable = new DictTable(tableNum('CustTable')); CustTable customer; ; if (tableHasStaticMethod(dictTable, identifierstr('find'))) customer = dictTable.callStatic(tableStaticMethodStr(CustTable, Find), '4000'); info (customer.Name); // Displays Light and Design in AX 4 Demo Data } |
Outro exemplo, só que agora usando uma classe:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | static void invokeFindOnAClass(Args _args) { SalesTable salesTable; SysDictClass dictClass; SalestableType salesTableType; ; dictClass = new SysDictClass(classNum('SalesTableType')); salesTable = SalesTable::find('00021_036'); salesTableType = SalestableType::construct(salesTable); if (dictClass.HasObjectMethod(identifierstr('delete'))) dictClass.callObject('delete', salesTableType); } |
[]s
Pichler
Leave a reply