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