如何为所有 private/protected 方法生成 Rtti 信息?

How to generate Rtti info for all private/protected Methods?

一段时间以来一直在为这个问题苦苦挣扎,似乎找不到解决方法。我正在使用 Delphi XE-2。

我需要为给定包中所有 class 的 private/protected 方法生成 Rtti 信息。

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

如果我将以下指令添加到包含 class 的单元,则 Rtti 是 为私有和受保护字段生成但仅针对 class.

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

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

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

谢谢!

除了按单位指定这一点之外别无他法。如您所见,in the documentation $RTTI 的范围是本地的。

XE5 之前有 a bug 使该指令在多个单元中有效,但它似乎没有 "work" 在包中。

我的最佳实践建议是使用一个 inc 文件,您只需将其包含在您编写的每个单元中。如果您已经有大量要添加的单位,那么只需使用一些搜索和替换即可。