Wie wäre es mit dem Typ Variant als Ergebnis? Dann übernimmt Delphi die komplette Typ-Konvertierung (dort, wo es geht) und man spart sich viel Schreibarbeit:
Delphi-Quellcode:
type
TMyClass = class
private
procedure SetItem(const Name: String; const Value: Variant);
function GetItem(const Name: String): Variant;
public
property Items[const Name: String]: Variant read GetItem write SetItem;
end;