У меня есть общий класс Delphi, который предоставляет функцию с аргументом родового типа. Внутри этой функции мне нужно передать экземпляр типового типа на другой объект, ожидающий тип Variant. Аналогично этому:
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;
Я пробовал использовать Rtti.TValue.From(SomeValue).AsVariant. Это работало для интегральных типов, но взорвалось для булевых. Я не совсем понимаю, почему, поскольку обычно я мог бы присвоить значение Boolean для Variant...
Есть ли лучший способ сделать это преобразование? Мне нужно, чтобы он работал только для простых встроенных типов (исключая перечисления и записи)