Tengo una clase genérica Delphi que expone una función con un argumento del tipo genérico. Dentro de esta función, necesito pasar una instancia del tipo genérico a otro objeto esperando un tipo de Variante. Similar a esto:¿Cómo puedo convertir de genérico a variante en Delphi
type
IMyInterface = interface
DoStuff(Value: Variant);
end;
TMyClass<T> = class
FMyIntf: IMyInterface
procedure DoStuff(SomeValue: T);
end;
[...]
procedure MyClass<T>.DoStuff(SomeValue: T);
begin
FMyIntf.DoStuff((*convert SomeValue to Variant here*));
end;
He intentado utilizar Rtti.TValue.From (SomeValue) .AsVariant. Esto funcionó para tipos integrales, pero explotó para booleanos. No entiendo muy bien por qué, ya que normalmente podría asignar un valor booleano a una variante ...
¿Hay alguna forma mejor de realizar esta conversión? Solo necesito que funcione para tipos simples incorporados (excluyendo enumeraciones y registros)
Ha intentado crear una variable local de tipo 'Variant', asigne' SomeValue' al mismo, y luego pase la variable local a 'FMyIntf.DoStuff()'? –
Sí. No puedo hacer eso porque no hay un elenco válido de 'T' a 'Variant' ... –