【发布时间】:2014-10-31 18:45:48
【问题描述】:
在 delphi 类中声明属性时是否可能有不同类型的结果?
例子:
property month: string read monthGet(字符串) write monthSet(整数);
在示例中,我希望使用属性月份,当我: 阅读,我得到一个字符串; SET,我设置一个整数;
【问题讨论】:
-
没有。它不是。这就是为什么会有像
AsString这样的转换属性和函数。如果你有更新版本的 Delphi,你可以定义一个像TMonth这样的类型,并为不同类型的转换编写辅助函数。你有哪个版本的 Delphi? -
那么,我该怎么做呢?
-
FWIW,
property XYZ的约定是将 getter 定义为function GetXYZ: SomeType,将 setter 定义为procedure SetXYZ(const Value: SomeType)。 -
Delphi/Pascal 属性与 RTTI 密切相关,因此 getter 和 setter 必须在同一类型上工作。也许,而且我至少知道一个,其他一些语言允许这种重载,但这主要是因为“属性”属性(对于那些语言)更像是一种语法糖(例如:使用分配运算符而不是用括号调用设置器)。
标签: delphi properties integer read-write