Generic参数类的类引用

时间:2009-09-15 05:10:49

标签: delphi generics delphi-2009

我有一个持久性框架,我正在尝试使用泛型,所以我不必为我想以类型安全的方式存储的每种类型的对象继续创建新的列表类。

我有一个方法返回列表类中包含的对象的类(所以我知道要运行哪些查询以及要创建哪个对象。

例如,它看起来像这样:

type

  TMyObject = class

  end;
  TMyObjectClass = class of TMyObject;


  TMyObjectList = class
  public
    function ListClass: TMyObjectClass; virtual; abstract;

  end;

  TMyObjectList<T: TMyObject, constructor> = class(TMyObjectList)
  public
    function ListClass: TMyObjectClass; override;

  end;

implementation

{ TMyObjectList<T> }

function TMyObjectList<T>.ListClass: TMyObjectClass;
begin
  result := T;  //  <==== this wont compile
end;

end.

在这种情况下,有没有办法返回泛型参数的类?

由于

N - [ (使用Delphi 2009)

2 个答案:

答案 0 :(得分:6)

这是a known issue in Delphi 2009.它已于2010年修复。我刚测试它,你的代码在那里编译得很好。

答案 1 :(得分:0)

T不是对象的实例。

在您的具体示例中,您应该写一些类似的内容:

结果:=自我;

我认为你看错了......