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 方法实现。
如果有通用的 属性 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 方法实现。