哪个 Delphi 版本支持公共方法的 RTTI?

Posted

技术标签:

【中文标题】哪个 Delphi 版本支持公共方法的 RTTI?【英文标题】:Which Delphi version supports RTTI for public methods? 【发布时间】:2011-05-18 15:51:02 【问题描述】:

默认情况下,低于 2010 版本的 RTTI 仅为已发布的类成员创建。

我在 2006 年的博客 (http://hallvards.blogspot.com/2006/09/extended-class-rtti.html) 中读到,使用 $METHODINFO(或 $M),公开和发布的方法被包括在内Delphi 6. 这是正确的吗?

博文说:

“对于 WebSnap,”新的“$METHODINFO ON 编译器指令(在 D6 和 D7 中未记录)用于为公共和已发布方法生成扩展 RTTI。” ...“更新(2007 年 10 月 27 日):$METHODINFO 首次在 Delphi 7 中可用,而不是在 Delphi 6 中。”

【问题讨论】:

$METHODINFO 仅适用于方法,不适用于属性。 @dthorpe 感谢您的提示 - 我删除了关于非工作公共属性的旁注 $METHODINFO 被添加到编译器以支持接口远程处理 - 我认为,动态存根 + 由与 Corba 对象一起使用的 RTL 生成的代理。我不记得最初出现在哪个版本的产品中。 【参考方案1】:

Delphi 2010 及更高版本中的新 RTTI 支持您想要的。

您在 Delphi 2009 及以下版本中运气不佳。

【讨论】:

Delphi 7 也是如此(至少)。 Delphi 2010 支持更多的东西。事实上,不只是“支持”,而是把它扔进去,如果你不想要它,你可能需要把它关掉,如果你以前没有它的话,你可能不会这样做 - ;)。 @mjustin:没问题;只是陈述事实,以便其他人也可以从中受益。

以上是关于哪个 Delphi 版本支持公共方法的 RTTI?的主要内容,如果未能解决你的问题,请参考以下文章

减小Delphi2010程序的尺寸(关闭RTTI反射机制)

Delphi XE----Rtti单元一(TRttiContext)

Delphi2010的RTTI增强

DELPHI RTTI

Delphi下的RTTI函数大全

Delphi 非 rtti 检查员