【发布时间】:2009-04-16 17:48:07
【问题描述】:
我有一个各种类实例的列表。我需要能够在不知道要创建什么的情况下创建一个类的新实例。所有涉及的对象都具有相同的祖先。对象成员变量的实际复制很容易......这是我遇到问题的新对象的创建。
诚然,我可以这样做:
case MyObjectTypeInstance.MyTypeEnum of
obj1:
Result:=TObjectType1.Create;
obj2:
Result:=TObjectType2.Create;
obj3:
Result:=TObjectType3.Create;
end;
这不符合“开放/封闭原则”。
最初我认为我可以做一些类似“Result:=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;
我以为这会更容易!
感谢您的帮助!
【问题讨论】:
标签: delphi delphi-2009 rtti