Man kann das ja nicht immer so machen, wie in diesem Fall richtigerweise von Uwe vorgeschlagen.
Daher einfach ausnutzen, dass bei einer Redefinition eines Typs der helper nicht berücksichtigt wird
Delphi-Quellcode:
type
TValue2 = type TValue;
TValueHelper = record helper for TValue
public
function AsVariant: Variant;
end;
function TValueHelper.AsVariant: Variant;
begin
if IsType<Boolean> then
Result := AsBoolean
else
Result := TValue2(Self).AsVariant();
end;
Natürlich darauf achten, dass TValue2 vor dem Helper definiert wird, dadurch kennt er unten beim Hardcast nicht die helper Methode und ruft die aus System.Rtti auf.