Delphi 2010引入了可以添加到类型声明和方法的自定义属性。哪些语言元素可以使用自定义属性?哪些语言元素可以使用Delphi的属性语言功能进行注释?
到目前为止我发现的例子包括类声明,字段和方法。 (并且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有趣的问题。该文档指出属性用于[“注释类型和类型成员”](http://docwiki.embarcadero.com/RADStudio/en/Overview_of_Attributes) - 我怀疑这意味着'type'子句中的* nothing *因为无论在记录或类(成员变量,属性,函数,过程,内部类等等)中声明 – 2011-05-25 06:13:33
关于属性的链接对我来说不起作用。如果你记得它说的话,你会介意编辑下面的答案来演示属性的使用属性吗? (我无法找到该链接的另一个来源,因为引用不包括关于作者,主题,论坛或甚至是日期的任何内容。) – 2016-07-22 16:16:04
@RobKennedy感谢您注意!我找不到原始资料,但另一篇文章,并更新了问题 – mjn 2016-07-23 10:42:47