Delphi 属性 getter 使用泛型的函数

Delphi property getter function using generics

如果有通用的 属性 getters/setters 在每次访问时执行一个共同的任务就好了。

该代码在 Delphi XE2 'E2008 Incompatible types' 中给出了编译时错误。类似的代码在编译期间给出了一个内部错误,但从未编译过。是我弄错了还是编译器限制?

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 语言中通用:

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

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