【发布时间】:2011-09-01 11:25:36
【问题描述】:
Delphi 2010 引入了可以添加到类型声明和方法的自定义属性。自定义属性可以用于哪些语言元素?
到目前为止,我发现的示例包括类声明、字段和方法。 (并且 AFAIK 泛型类不支持自定义属性)。
this article 中显示了一些示例。看起来变量(任何类声明的外部)也可以具有属性。
根据这篇文章,属性可以用于
- 类和记录字段和方法
- 方法参数
- 属性
- 非本地枚举声明
- 非局部变量声明
还有其他可以放置属性的语言元素吗?
更新:本文指出自定义属性可以放在属性之前:http://francois-piette.blogspot.de/2013/01/using-custom-attribute-for-data.html
它包含以下代码示例:
type
TConfig = class(TComponent)
public
[PersistAs('Config', 'Version', '1.0')]
Version : String;
[PersistAs('Config', 'Description', 'No description')]
Description : String;
FTest : Integer;
// No attribute => not persistent
Count : Integer;
[PersistAs('Config', 'Test', '0')]
property Test : Integer read FTest write FTest;
end;
我猜还有一种方法可以读取方法参数的属性,例如
procedure Request([FormParam] AUsername: string; [FormParam] APassword: string);
【问题讨论】:
-
+1 有趣的问题。文档声明属性是用于"annotating types and type members" - 我怀疑这意味着
type子句中的 anything 以及在记录或类中声明的任何内容(成员变量、属性、函数、过程,内部类等) -
关于属性的链接对我不起作用。如果您还记得它所说的内容,您介意编辑下面的答案以演示在属性上使用属性吗? (我找不到该链接的其他来源,因为引文不包含有关作者、主题、论坛甚至日期的任何内容。)
-
@RobKennedy 感谢您的关注!我找不到原始来源,但另一篇文章并更新了问题
标签: delphi annotations delphi-2010 delphi-xe delphi-xe2