使用MethodInfo.Invoke

时间:2017-08-03 23:20:14

标签: c# reflection

我很抱歉,如果以前曾经问过这个问题,我现在已经四处看了几个小时,而且我无法对我的问题有所了解。我在一个我已经上课的MethodInfo上调用Invoke:

        MethodInfo mappedMethod =  _boundMethod;
        mappedMethod.Invoke(pAction.Target, pParameters);

我遇到的问题是,如果mappedMethod最终抛出异常,调试器将不会在错误点处中断,就像在正常情况下处理未处理的异常一样。相反,异常传递给Invoke方法,它变为“调用目标抛出了异常。”

我想知道的是,是否有任何方法可以让调试器在实际问题的位置内调用调用函数。我试过这个:

        try
        {
            mappedMethod.Invoke(pAction.Target, pParameters);
        }
        catch (TargetInvocationException e)
        {
            throw e.InnerException;
        }

至少会抛出实际的异常,但调试器在抛出时会中断,但仍然不会将调试器光标移动到发生错误的位置。

我知道你可以使用Debug-> Exceptions立即调试所有抛出异常的调试器,但这在我的情况下是不合适的,因为我必须不断地打开和关闭它(我的代码已尝试-catches到处为用户创建的内容经常抛出异常)以上,我的代码的主要目的是作为第三方用户的脚本语言。我正在使用Invoke调用用户脚本,因此我的脚本层能够向用户显示错误发生的位置,而无需更改调试器设置。

我能做什么,或者Invoke只是不能以我想要的方式工作?再次对不起,如果有人问过,这似乎也是其他人想要知道的事情!

0 个答案:

没有答案