我需要这样的东西:
function fn_get_all_propperties (obj : TObject) : TObjectList<TTypeKind>;
但: [DCC错误] uFuncMain.pas(20):E2511类型参数'T'必须是类类型
函数的结果应该是什么类型?
答案 0 :(得分:2)
问题是TObjectList
的定义如下:
TObjectList<T: class> = class(TList)
....
end;
定义中的T: class
表示通用参数T
为constrained为class
。但是TTypeKind
不是一个阶级。它是一种价值类型。
因此编译器拒绝您尝试的泛型实例化为无效,因为它不满足约束。
因此,您无法在此使用TObjectList<T>
,而应使用TList<T>
。你的功能应该像这样定义:
function fn_get_all_properties(obj: TObject): TList<TTypeKind>;