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

san*_*oIT 1 delphi rtti compiler-directives delphi-xe2

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

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

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

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

{$RTTI METHODS([vcPublic, vcProtected, vcPrivate])}
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢!

Ste*_*nke 6

没有其他方法可以指定每个单位.正如您在文档中看到的那样,$RTTI本地的范围.

XE5中存在一个错误,该指令使得该指令在多个单元中有效,但似乎它在包中没有"起作用".

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