zoukankan      html  css  js  c++  java
  • classidget获取object的id, 递归遍历所有方法 DictMethod | callObject | invokeObjectMethod

    public static anytype invokeObjectMethod(Object _object, identifiername _methodName, boolean _tryBaseClass = false)
    {
        DictClass  dictClass = new DictClass(classidget(_object));
        DictClass  dictClassBase;
        DictMethod dictMethod;
        int i;
    ;
        for (i=1; i<=dictClass.objectMethodCnt(); i++)
        {
            if (dictClass.objectMethod(i) == _methodName)
            {
                dictMethod = dictClass.objectMethodObject(i);
                if (dictMethod.parameterCnt() == 0)
                {
                    // invokeObjectMethod is listed as a dangerous API. Just suppress BP error;
                    // CAS is implemented by DictClass::callObject.

                    // BP deviation documented
                    return dictClass.callObject(_methodName, _object);
                }
                throw error(strfmt("@SYS87800", _methodName));
            }
        }

        if (_tryBaseClass && dictClass.extend())
        {
            dictClassBase = new DictClass(dictClass.extend());

            // BP deviation documented
            return SysDictClass::invokeObjectMethod(dictClassBase.makeObject(), _methodName, _tryBaseClass);
        }

        throw error(strfmt("@SYS60360", _methodName));
    }

  • 相关阅读:
    再回首Java第九天
    再回首Java第八天
    再回首Java一周记
    再回首Java第六天
    再回首Java第五天
    再回首Java第四天
    再回首Java第三天
    再回首Java第二天
    再回首Java第一天
    关于i++和++i理解
  • 原文地址:https://www.cnblogs.com/perock/p/2294137.html
Copyright © 2011-2022 走看看