rtti在使用默认值时不要调用想要的重载函数

时间:2016-05-17 15:20:29

标签: delphi delphi-xe5 rtti

我在rtti方法调用解析中遇到问题。 我的rtti解析代码是在以下topic中作为解决方案实现的代码 在这个答案中,作者使用参数长度作为决定性比较器来选择重载方法,但在我的情况下我想使用重载方法使用一些默认值,当面对以下内容时将无法解决:

第一个模型(称为):用户

包含公开:

         procedure OnMyFocusChanged(); overload;
         procedure OnMyFocusChanged(Caller : Integer ; id : Integer = -1); overload;

第二个模型:User_block.pas

有这一行:CTRL.Start('User','OnMyFocusChanged',[index]); CTRL是一个包含一些100%工作方法的控制器,它将调用上述topic中实现的方法。

在下列情况下,要求Rtti解决OnMyFocusChanged(index)将无法解决。

有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:2)

我不认为默认参数值是由RTTI公开的。

在任何情况下,最干净的解决方案是停止使用默认参数。添加第三个带有单个参数的重载。通过调用传递-1的两个参数重载来实现它。