Die einzige Lösung wäre, wenn man statt der überladenen Property nun nur noch ein Property nutzt, welches als Parameter einen Variant besitzt und man dann intern die entsprechenden Varianten Anhand des Variant-Inhalts ausführt.
Oder man mißhandelt wieder mal die Record-Operatoren und bastelt sich einen gemischten Parameter-Typen.
Allerdings sind beide Varianten zwar möglich, aber sie sind keine "optimale" Lösung.
Delphi-Quellcode:
type
TAssocArray<T> = record
private
function GetNamedValue(const AName: string): string;
function GetValue(AIndex: Integer): string;
procedure SetNamedValue(const AName: string; const AValue: string);
procedure SetValue(AIndex: Integer; const AValue: string);
public
property Value[AIndex: Integer]: string read GetValue write SetValue; default;
property ValueByName[const AName: string]: string read GetNamedValue write SetNamedValue;
end;
*fixed*