我不確定在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。
,並與來自烏維·拉貝的建議,我碰到了一個問題:
我修改了我的班
TMyObjectList<T:class, constructor> = class(TMyBaseObjectList<T>)
其中TMyBaseObjectList被定義爲
TMyBaseObjectList<T:TMyBaseObject> = class(TObjectList)
現在我收到一個錯誤: 類型參數'T'不兼容le與類型'T:TMyBaseObject'
直接調用NewInstance的壞主意。它不調用構造函數。 – 2010-08-06 13:27:29
我沒有意識到這一點,謝謝指出。無論如何,Uwes的答案看起來像是最好的解決方案。 – 2010-08-06 14:43:40