1

已经为这个问题苦苦挣扎了一段时间,似乎无法找到解决方法。我正在使用德尔福 XE-2。

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

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

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

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

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

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

谢谢!

4

1 回答 1

7

除了指定每个单位之外,别无他法。正如您在文档中看到的,范围$RTTI是本地的。

XE5 中存在一个错误,该错误使该指令在多个单元中有效,但它似乎在包中“不起作用”。

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

于 2015-06-30T15:47:07.013 回答