1

我正在使用以下代码动态执行对可能存在或不存在的表方法的调用。

但是,它总是返回错误执行代码:myTableName 表没有方法'myUpdateMethod'。

    Dicttable         dictTable;
    Common            common;
    ExecutePermission perm;

    perm = new ExecutePermission();
    dictTable= new DictTable(tableName2Id('myTableName'));
    if (dictTable != null)
    {
        common = dictTable.makeRecord();

        // Grants permission to execute the
        // DictTable.callObject method. DictTable.callObject runs
        // under code access security.
        perm.assert();
        dictTable.callObject('myUpdateMethod', common);
    }

    // Close the code access permission scope.
    CodeAccessPermission::revertAssert();

这些对象在不同的​​模型中,但只是为了好玩,我尝试在两个模型之间进行参考,看看它是否有所不同。它没有解决问题。

谢谢

4

1 回答 1

1

将被调用的方法从静态更改为非静态。

开始工作,然后找到 callStatic() 等效项。

这是我最终用于非静态方法的代码,它没有参数。

    Dicttable         dictTable;
    Common            common;
    ExecutePermission perm;

    perm = new ExecutePermission();
    dictTable= new DictTable(tableName2Id('MyTableName'));
    if (dictTable != null)
    {
        common = dictTable.makeRecord();
        // Grants permissions
        perm.assert();
        if (dictTable.doesMethodExist('myMethodName'))
        {
            dictTable.callObject('myMethodName', common);
        }
    }

    // Close the code access permission scope.
    CodeAccessPermission::revertAssert();
于 2017-11-19T23:18:06.427 回答