我不确定Delphi是否有这个功能。我已经搜索了一下,但好像找不到答案(例如示例或表明它不可能):
我有一个通用的列表类,并且我想创建该通用类型的实例。例如:
type
TTypeA = class(TObject);
procedure Test;
var
MyList: TobjectList<TTypeA>;
NewListObject: TTypeA;
begin
MyList := TObjectList<TTypeA>.Create;
NewListObject := MyList.xxx //what to put on the xxx
end;
是否可能创建一个函数xxx来创建一个新的TTypeA类型的对象?
@jeroen:感谢您下面的答案。但是,我在我的问题中忘记了一个重要细节:
我希望这段代码适用于任何其他类型,而不需要事先了解TObjectList的类型T。我可能会创建以下列表:
MyList: TObjectList<TCar>;
MyList: TObjectList<TBike>;
不知道MyList是否包含TCar或TBike(两者都是从同一基类派生且构造函数相等),我想向MyList添加新项。
根据Uwe Raabe的建议,我修改了我的类:
TMyObjectList<T:class, constructor> = class(TMyBaseObjectList<T>)
其中TMyBaseObjectList定义为
TMyBaseObjectList<T:TMyBaseObject> = class(TObjectList)
现在我遇到了一个问题:
类型参数“T”与类型“T:TMyBaseObject”不兼容。