Я столкнулся с той же проблемой и решил ее, добавив метод низкоуровневого указателя-копирования в класс в качестве обходного пути:
TTest <T : class, constructor> = class
private
function _ToGeneric(AItem: TObject): T; inline; //inline, so it's a little faster
public
function CreateMyObject : T;
end;
function TTest<T>.CreateMyObject : T;
var
Obj : TObject;
begin
Obj := T.Create;
Result := _ToGeneric(Obj);
end;
function TTest<T>._ToGeneric(AItem: TObject): T;
begin
System.Move(AItem,Result,SizeOf(AItem))
end;