如何为所有私有/受保护方法生成Rtti信息?

时间:2015-06-30 15:39:21

标签: delphi delphi-xe2 rtti compiler-directives

一直在努力解决这个问题,似乎无法找到解决方法。我使用的是Delphi XE-2。

我需要为给定包中的所有类生成私有/受保护方法的Rtti Info。

默认情况下,Delphi似乎只为公共和已发布的方法生成Rtti。

如果我将以下指令添加到包含类的Unit,那么Rtti就是 为私有和受保护的字段生成但仅适用于该类。

{$RTTI METHODS([vcPublic, vcProtected, vcPrivate])}

我不想将此指令添加到每个单元。

我将指令添加到Packages .dpk文件中,但它没有效果。

谢谢!

1 个答案:

答案 0 :(得分:6)

除了为每个单位指定此项外,别无他法。正如您所见in the documentation $RTTI的范围是本地的。

XE5中有a bug使得该指令在多个单元中有效,但似乎它在包中没有“工作”。

我对最佳做法的建议是使用您刚写入的每个单元中包含的inc文件。如果您已经有大量的单位要添加它,那么只需使用一些搜索并替换即可。