Delphi 2010 中的扩展 RTTI 是否提供了一种在运行时列出定义的类和记录助手的方法?
据我所知,当为一个类定义多个类助手时, Delphi不会显示提示或警告,类助手检测可能是“质量保证”中的一个有用例程。
ps 当然我知道我永远不应该在没有源代码的情况下使用第三方组件或库,这将使 grep 类助手变得容易。
Delphi 2010 中的扩展 RTTI 是否提供了一种在运行时列出定义的类和记录助手的方法?
据我所知,当为一个类定义多个类助手时, Delphi不会显示提示或警告,类助手检测可能是“质量保证”中的一个有用例程。
ps 当然我知道我永远不应该在没有源代码的情况下使用第三方组件或库,这将使 grep 类助手变得容易。
由于类助手仅适用于基于哪些助手在范围内“最接近”的类,因此类根本无法知道助手的存在。例如,您可以在您的单元中创建一个类助手来“帮助”另一个您没有源的单元中的类。另一个单元的班级不知道任何助手。如果它确实有这些知识,那么它必须重新编译以考虑到这一点......这导致了下一个问题;
考虑一下:您可以在一个公共单元中声明一个类,该类被整个应用程序中的许多其他单元使用。在每个单元中,您为这个公共类声明了一个新的助手,它具有不同的方法和“助手”函数。由于每个单元对也声明自己的助手的其他单元一无所知,因此按照设计,无法以某种方式合并所有助手。现在考虑这个公共单元现在跨越预编译的包边界。
班级助手是诱人的小异教徒。他们承诺名誉和财富,但他们往往会像雨点般倾泻死亡和毁灭……在你把自己交给他们的诡计很久之后。
出于这个原因,将它们引入语言解决了非常具体的问题,即“出现”将功能引入现有框架的能力。只要您坚持“只有一个助手”的规则,并且不偏离这条道路,您就可能相对毫发无损。无论如何,您需要拥有 Beowulf、Leonidas(斯巴达的)和 Frodo Baggins 的联合毅力才能在这些水域中航行。
鉴于此,在 RAD Studio 团队中,我们不愿意在可以避免的地方使用类助手。当我们确实使用它们时,甚至在我们开始之前就形成了一个合适的方阵......
这里有龙...