我有各種類的實例列表。我需要能夠創建一個新的類的實例,而不必知道要創建什麼。所涉及的所有對象都具有相同的祖先。對象的成員變量的實際複製很容易...這是創建新的對象,我有一個問題。我如何創建一個類的新實例?
誠然,我可以做這樣的事情:
case MyObjectTypeInstance.MyTypeEnum of
obj1:
Result:=TObjectType1.Create;
obj2:
Result:=TObjectType2.Create;
obj3:
Result:=TObjectType3.Create;
end;
,不會按照「打開/關閉的原則」。
最初我以爲我可以做一些像「結果:= MyObjectTypeInstance.Create;」但由於破壞者的困難,這並沒有像希望的那樣工作。
這裏的最新猜測我應該怎麼做這個...
var
fooA, fooB:TFoo;
begin
fooA:=TFoo2.Create; // it could be any of many types
fooB:=? // how to create fooB of same class type as fooA????
// do something
fooA.Free;
fooB.Free;
end;
我會一直this'd認爲是更容易!
謝謝你的幫助!
是的......當然!我應該想到這一點!謝謝! – 2009-04-16 19:53:28