17.09.2018, 20:13 | #1 |
Участник
|
a33ik: Function SysOperationDataContractInfo::newParameterInfo has been incorrectly called
Источник: http://daxonline.org/1623-function-s...ly-called.html
============== Problem DictMethod, when it is running without debugger, does not correctly fetches metadata of inherited methods on a child class. Following code: static void VKDictMethodTest(Args _args){ DictMethod dictMethod; str parmName; int parmIndex = 1; dictMethod = new dictMethod(UtilElementType::ClassInstanceMethod, classNum(AssetProposalAcquisition), 'buildRange'); parmName = dictMethod.parameterName(parmIndex); if (parmName) { info(strFmt("ParmName: %1", parmName)); } else { throw error("incorrect"); }} As can be seen from hierarchy browser the method buildRange is available at AssetProposal class. Depending on the debug mode option, the execution of code above will give different results. Debug mode: No It does not able to fetch first parameter name. Debug mode: When breakpoint ParmName: _items Impact SysOperation framework uses DictMethod to prepare parameters for method execution \Classes\SysOperationServiceController\getDataContractInfoObjectsInternal <div>protected Map getDataContractInfoObjectsInternal(){ SysDictClass dataContractClass; DictMethod dictMethod; int parameterCount; int i; Object dataContractObject; SysOperationDataContractInfo contractInfo; Map dataContractInfoObjects; dataContractInfoObjects = new Map(Types::String, Types::Class); dictMethod = this.getServiceOperation(); if (dictMethod) { parameterCount = dictMethod.parameterCnt(); for (i = 1; i |
|