我找到了great explanation about the new RTTI in Delphi,但我不明白我读过的所有重要内容 - 我在哪里可以使用它?
它应该替换什么?
答案 0 :(得分:20)
扩展的RTTI就像在.NET中的Reflection一样。它使您可以访问内部应用程序结构信息。您可以在运行时访问类属性,方法等。在以前无法执行的范围内。
使用它的一些方法:
可能有很多情况下使用它会有所帮助。简而言之,它为您的应用添加了动态方面。与在设计时设计所有内容相比,您的产品能够在运行时更高效地完成某些任务。它不是一颗银弹,许多人可能永远不会使用它。但是,如果不使用新的RTTI,一些设计模式或某些问题就无法解决(至少不能有效解决)
答案 1 :(得分:5)
扩展RTTI可能有用的一个例子:
直到今天,表单属性必须发布,因为这种可见性是序列化/反序列化Delphi表单文件(dfm)所必需的。
通过扩展RTTI,Delphi可以使用一个新的流层,不需要这种高级别的可见性。当然,这只是一个想法,但实际上有一个优势,即表单上的所有组件都可以是私有或受保护。这将是更多的OOP(封装)并消除由外部可见的表单字段/属性列表中的数十个不相关条目引起的“噪音”。
扩展RTTI的另一个典型用例是Inversion of Control和Dependency Injection框架。
例如Delphi Spring Framework Delphi需要Delphi 2010(或更高版本),因为它大量使用RTTI,可用于constructor injection。