使用泛型的 Delphi 属性 getter 函数

标签 delphi generics properties delphi-xe2

如果有通用属性 getter / setter 在每次访问时执行常见任务,那就太好了。

该代码在 Delphi XE2 中给出编译时错误“E2008 不兼容类型”。类似的代码在编译期间出现内部错误,但从未编译。是我犯了错误还是编译器限制?

type TFoo = class
private
  function Get<T>: T;
public
  property Bar: Integer read Get<Integer>;
end;

function TFoo.Get<T>: T;
begin
  Result := 0;
end;

最佳答案

以下内容在 Delphi 语言中可以是通用的:

  • 类(class),例如TFooClass<T> = class
  • 记录,例如TFooRecord<T> = record
  • 接口(interface),例如TFooInterface<T> = interface
  • 程序类型,例如TFooProc<T> = procedure
  • 方法,例如procedure FooMethod<T>()

属性本身不能是通用的,也不能使用通用的 getter 或 setter 方法来实现。

关于使用泛型的 Delphi 属性 getter 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59408370/

相关文章:

delphi - 提交由 Firebird 中的存储过程插入的记录

ios - 如何检测类型对于通用 propertyWrapper 是可选的

VB.NET 2012 在属性获取上设置属性

delphi - 当我们只知道程序的地址时如何执行它?

Delphi:如何处理点击PageControl的空白区域?

delphi - 我使用Delphi调用DLL,但仍然出现错误

C# Return Generic List/IEnumerable,它是如何工作的?

java - 泛型类中的静态最终变量导致未检查和原始类型警告

cocoa - 独立重用已声明的强大属性

wpf - 为什么 RichTextBox 的 MaxLength 属性在 WPF 中不起作用?