Delphi 2009 RTL / VCL中的属性语法?

时间:2012-02-16 17:29:07

标签: delphi attributes delphi-2009

在我工作的地方,我们仍在使用Delphi 2009.我碰巧看着VCL中的Forms单元并偶然发现:

[UIPermission(SecurityAction.LinkDemand, Window=UIPermissionWindow.AllWindows)]
function DisableTaskWindows(ActiveWindow: HWnd): TTaskWindowList;

此属性显然是CLR类UIPermissionAttribute,但与CLR的其他引用不同,此属性未包含在条件编译指令中

这让我感到惊讶,因为AFAIK,在2010年之前的Delphi Win32版本中,仅用于数组和集合类型中的索引表示法,定义集合并为接口分配GUID。情况似乎并非如此。

我进行了正则表达式搜索,并在整个RTL / VCL中找到了几十个示例。有些是类型的属性,有些属于方法。

这些只是被编译器忽略了,还是在Win32中用于某些目的?


我还发现了类似的语法:

[!UnitName]
[!InterfaceName]

这似乎与在IDE向导中从模板生成源文件有关,但这些文件不在RTL源文件夹中。它们位于对象存储库文件夹中。

1 个答案:

答案 0 :(得分:0)

我原本希望属性可能是一个无证的特征,类似于类记录员在记录之前可以使用多年,但事实并非如此。

我尝试了一个简单的测试,并在类定义之前添加了属性表示法。编译器没有阻塞它,但确实发出警告,不支持自定义属性。