功能结果是通用的

时间:2014-02-14 09:57:06

标签: function delphi generics

我需要这样的东西:

  function fn_get_all_propperties (obj : TObject) : TObjectList<TTypeKind>;

但: [DCC错误] uFuncMain.pas(20):E2511类型参数'T'必须是类类型

函数的结果应该是什么类型?

1 个答案:

答案 0 :(得分:2)

问题是TObjectList的定义如下:

TObjectList<T: class> = class(TList)
  ....
end;

定义中的T: class表示通用参数Tconstrainedclass。但是TTypeKind不是一个阶级。它是一种价值类型。

因此编译器拒绝您尝试的泛型实例化为无效,因为它不满足约束。

因此,您无法在此使用TObjectList<T>,而应使用TList<T>。你的功能应该像这样定义:

function fn_get_all_properties(obj: TObject): TList<TTypeKind>;