我在rtti方法调用解析中遇到问题。我的rtti解析代码是以下主题中作为解决方案实现的代码在这个答案中,作者使用参数长度作为决定性的比较器来选择重载方法,但在我的情况下,我想使用一些默认值来使用重载方法,当面临以下问题时,这些默认值将无法解决:
第一个模型(称为):用户
包含为公共:
procedure OnMyFocusChanged(); overload;
procedure OnMyFocusChanged(Caller : Integer ; id : Integer = -1); overload;
第二个模型:User_block.pas
有这行:CTRL.Start('User','OnMyFocusChanged',[index]);
CTRL是一个控制器,它包含一些100%有效的方法,它将调用前面提到的主题中实现的方法。
在以下情况下,要求Rtti解决OnMyFocusChanged(index)
将不会得到解决。
有办法解决这个问题吗?
我不认为RTTI公开默认参数值。
在任何情况下,最干净的解决方案都是停止使用默认参数。添加采用单个参数的第三个重载。通过调用传递-1的两个参数重载来实现它。