Wenn man den Typ "einschränkt", dann compiliert es:
class Function ArrToJSON<T: TJSONArray>(const aArr:TArray<T>):String;
Leider kann man nur auf Klassen, Interfaces und Records einschränken, nicht auf String, Integer etc.
Aber du könntest sowas versuchen (ungetestet):
Delphi-Quellcode:
if TypeInfo(T) = TypeInfo(
string)
then
JSArr.Add(
String(element))
else if TypeInfo(T) = TypeInfo(Double)
then
JSArr.Add(Double(element))
...
else
Raise Exception.Create((PTypeInfo(TypeInfo(T))^.
Name + '
not allowes');