gpt4 book ai didi

delphi - 为什么我应该关心 Delphi 中的 RTTI?

转载 作者:行者123 更新时间:2023-12-03 14:32:46 26 4
gpt4 key购买 nike

我听说过很多关于新的/改进的 RTTI capabilities of Delphi 2010 ,但我必须承认我的无知......我不明白。我知道 Delphi 的每个版本都支持 RTTI...并且我知道 RTTI(运行时类型信息)允许我在应用程序运行时访问类型信息。

但这到底是什么意思? Delphi 2010的RTTI支持和reflection in .NET一样吗?

有人可以解释一下为什么 RTTI 很有用吗?假装我是你的尖头发老板,帮助我理解为什么 RTTI 很酷。我如何在实际应用程序中使用它?

最佳答案

Delphi 中的 RTTI 仍然不如 .NET 或其他托管语言中的 Reflection 功能齐全,因为它是在编译代码上运行的,而不是中间语言(字节码)。然而,这是一个非常相似的概念,Delphi 2010 中的新 RTTI 系统使其更加接近反射,公开了整个面向对象的 API。

D2010 之前,RTTI 非常有限。我记得用它做的唯一一件事就是转换 enumerated type to a string (或 vice versa )用于下拉列表。我可能曾经用过它 control persistence .

借助 D2010 中的新 RTTI,您可以做更多事情:

  • XML Serialization

  • Attribute基于元数据 (TCustomAttribute)。典型的用例是自动验证属性和自动权限检查,您通常必须为此编写大量代码。

  • 添加Active Scripting支持(即使用Windows脚本控件)

  • 构建插件系统;以前你可以这样做,但是有很多令人头痛的事情。我找不到一个真正好的例子来说明有人从上到下执行此操作,但所有必要的功能现在都可用。

  • 看起来有人甚至试图实现 Spring (DI 框架)适用于 Delphi 2010。

所以它绝对非常有用,尽管我不确定您能向 PHB 解释得如何;它的大部分用处可能会通过第 3 方库和框架来实现,这与当今 .NET 社区中的工作方式非常相似 - 很少看到业务逻辑中存在反射代码,但典型的应用程序会使用多个基于反射的组件,例如对象关系映射器或 IoC 容器。

我回答了问题了吗?

关于delphi - 为什么我应该关心 Delphi 中的 RTTI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2217068/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com