我有各种类的实例列表。我需要能够创建一个新的类的实例,而不必知道要创建什么。所涉及的所有对象都具有相同的祖先。对象的成员变量的实际复制很容易...这是创建新的对象,我有一个问题。我如何创建一个类的新实例?
诚然,我可以做这样的事情:
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