delphi - 如何为所有私有(private)/ protected 方法生成 Rtti 信息?

标签 delphi delphi-xe2 rtti compiler-directives

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

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

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

如果我将以下指令添加到包含类的单元中,那么 Rtti 是
为私有(private)和 protected 字段生成,但仅针对该类。

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

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

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

谢谢!

最佳答案

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

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

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

关于delphi - 如何为所有私有(private)/ protected 方法生成 Rtti 信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31142685/

相关文章:

delphi - 如何重写 TClientDataSet 的排序机制

delphi - RTTI 可以在设计时询问项目代码中的类型吗?

delphi - 如何在Delphi XE中通过名称获取类类型引用?

Delphi-回调错误代码

delphi - Rad Studio的问题-Delphi 2010 IDE

delphi - Delphi中EaseIn、EaseOut函数的实现

delphi - 开源 Delphi 包可使用哪些项目选项?

c++ - 在 C++ 中利用 RTTI 的实际用途

android - PascalScript 是否与 Delphi XE5 兼容以创建 Android/iOS/Windows 应用程序?

windows - 在我的应用程序激活之前检测哪个窗口处于事件状态