使用RTTI在运行时查找Delphi中的所有类助手?

时间:2010-02-10 18:45:38

标签: delphi delphi-2010 rtti class-helpers

Delphi 2010中的扩展RTTI是否提供了在运行时列出定义的Class and Record Helpers的方法?

据我所知,Delphi does not show a hint or warning为一个类定义了多个类助手时,类助手检测可能是“质量保证”中的一个有用例程。

P.S。当然我知道我永远不应该使用没有源代码的第三方组件或库,这样可以很容易地使用grep类助手。

1 个答案:

答案 0 :(得分:9)

由于类助手仅根据作用域中“最接近”的助手应用于类,因此类无法知道助手存在。例如,您可以在单元中创建一个类助手,以“帮助”另一个没有源的单元的类。另一个单位的班级对任何助手都没有任何线索。如果它确实有这方面的知识,那么就必须重新编译以考虑到这一点......这会导致下一个问题;

考虑一下:您可以在一个公共单元中声明一个类,该单元在整个应用程序中被许多其他单元使用。在每个单元中,您使用不同的方法和“辅助”函数为此公共类声明一个新的帮助器。由于每个单位都不知道其他单位也宣称他们自己的帮助,因此,设计上没有办法以某种方式合并所有助手。现在考虑这个常见的单元现在存在于预编译的包边界内。

班级助手是诱人的小异教徒。他们承诺名声和财富,但他们经常会在死亡和毁灭之后下雨......在你把自己交给他们的诡计之后很久。

出于这个原因,他们对语言的介绍解决了非常具体的问题,即“出现”将功能引入现有框架的能力。只要您遵守“仅一个帮助者”规则,并且不偏离该路径,您可能会相对毫发无损地出现。无论如何,你需要将Beowulf,Leonidas(斯巴达)和Frodo Baggins的肠道坚韧组合在这些水域中航行。

鉴于此,在RAD Studio团队中,我们不愿意使用可以避免的类帮助程序。当我们使用它们时,在我们开始之前就会形成一个合适的方阵......

这里有龙......