我在 rtti 方法调用解析中遇到问题。 我的 rtti 解析代码是在以下 topic 中作为解决方案实现的代码 在这个答案中,作者使用参数长度作为决定性比较器来选择重载方法,但在我的例子中,我想使用使用一些默认值的重载方法,这些默认值在面对以下情况时将无法解决:
第一个模型(称为):用户
包含为公共(public):
procedure OnMyFocusChanged(); overload;
procedure OnMyFocusChanged(Caller : Integer ; id : Integer = -1); overload;
第二个模型:User_block.pas
有这一行:CTRL.Start('User','OnMyFocusChanged',[index]);
CTRL 是一个 Controller ,包含一些 100% 有效的方法,它将调用提到的 topic 中实现的方法。 .
在以下情况下,要求 Rtti 解析 OnMyFocusChanged(index)
将不会得到解析。
有办法解决这个问题吗?
最佳答案
我认为 RTTI 不会公开默认参数值。
无论如何,最干净的解决方案是停止使用默认参数。添加采用单个参数的第三个重载。通过调用两个参数重载传递-1来实现。
关于delphi - 使用默认值时,rtti 不调用所需的重载函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37280244/