为什么我应该关心德尔福的RTTI?

前端之家收集整理的这篇文章主要介绍了为什么我应该关心德尔福的RTTI?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我听说过很多新的/改进的 RTTI capabilities of Delphi 2010,但我必须承认我的无知…我不明白。我知道每个版本的Delphi都支持RTTI …我知道RTTI(运行时类型信息)允许我访问类型信息,而我的应用程序运行。

但究竟是什么意思?德尔福2010的RTTI是否支持reflection in .NET相同的事情?

有人可以解释为什么RTTI是有用的?假装我是你尖尖的头发老板,并帮助我明白为什么RTTI是酷。我如何在现实世界的应用程序中使用它?

解决方法

在Delphi中的RTTI仍然不像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脚本控件)
>构建插件系统;你可以这样做,但有很多的头痛。我不能找到一个很好的例子,有人从顶部到底部这样做,但所有必要的功能现在可用。
>看起来有人甚至试图为Delphi 2010实现Spring(DI框架)。

所以这绝对是非常有用的,虽然我不知道你能多好地解释它到PHB;它的大部分有用性可能会通过第三方库和框架实现,就像它在.NET社区中的工作方式一样 – 很少看到反射代码位于业务逻辑中,但典型的应用程序将使用的几个基于反射的组件,如对象关系映射器或IoC容器。

我回答了这个问题吗?

猜你在找的Delphi相关文章