у меня есть список экземпляров класса различных видов. мне нужно иметь возможность создать новый экземпляр класса, не зная точно, что создавать. все задействованные объекты имеют одного и того же предка. фактическое копирование переменных-членов объекта легко... это создание нового объекта, где у меня есть проблема.
по общему признанию, я мог бы сделать что-то вроде этого:
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;
я бы подумал, что это будет проще!
Спасибо за помощь!