ну они же тоже подходят. Что за словоблудие, всем же понятно
function GetObject<T: class>(const Method: string; Params: TParams; out Object: T): Boolean;
....
function GetUsers(Params: TParams; out Items: TUsers): Boolean;
begin
Result := GetObject<TUsers>('users', Params, Items);
end;
function GetUser(Params: TParams; out Item: TUser): Boolean;
begin
Result := GetObject<TUser>('user', Params, Item);
end;
function GetInfo(Params: TParams; out Item: TInfo): Boolean;
begin
Result := GetObject<TInfo>('info', Params, Item);
end;
var Item: TWeather;
if API.GetObject<TWeather>('v3/weather', Params, Item) then ...