我有这堂课:
TMyClass = class
public
function DoSomethingNice(const Value: string = 'Yes please!'): Boolean;
end;
现在,使用RTTI,是否可以获取方法 DoSomethingNice 的参数值的默认值?如果是这样,怎么样?
我最感兴趣的是D2010解决方案,但XE也会这样做。
答案 0 :(得分:12)
这是不可能的,因为RTTI没有关于默认参数的信息。 默认参数值仅在编译时使用
所以,如果我们有......
procedure test(x : integer = 3)
然后调用没有参数值的方法:
test()
然后将其编译为test(3)
要检查这一点,你可以在调试器中打开CPU窗口:
和test()
看起来像
mov eax, $00000003
call test