Delphi: determine o tipo real de um genérico?
Existe alguma maneira de determinar o tipo de uma variável passada como um argumento para um método? Considere a classe:
TSomeClass = class
procedure AddToList<T: TDataType; U: TListClass<T>>(Element: T; List: U);
end;
com a implementação do método
procedure TSomeClass.AddToList<T, U>(Element: T; List: U);
begin
if Element is TInt then
List.AddElement(TInt.Create(XXX))
else if Element is TString then
List.AddElement(TString.Create(YYY));
end;
onde TInt.Create () e TString.Create () têm diferentes conjuntos de argumentos, no entanto, ambos herdam de TDataType.
Agora eu sei ois
-operador não pode ser usado assim, mas existe uma alternativa legal que faz o que estou pedindo aqui?