Как я могу преобразовать универсальный вариант в вариант в Delphi

У меня есть универсальный класс 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. Это работало для целочисленных типов, но не подходило для логических значений. Я не совсем понимаю, почему, поскольку обычно я мог бы присвоить логическое значение Варианту ...

Есть ли лучший способ сделать это преобразование? Мне нужно, чтобы он работал только с простыми встроенными типами (исключая перечисления и записи)

12
задан LU RD 20 January 2012 в 16:36
поделиться