Трудно точно сказать, что вы пытаетесь сделать здесь, но я могу сделать предположение. Для TResponseObject вам нужен объект, который может содержать другой объект и работать с ним. В этом случае вы, вероятно, захотите передать его конструктору, например:
constructor TResponseObject<T>.Create(value: T);
begin
FReturnObject := value;
end;
Аналогично, если вы создаете метод GetReturnObject, он, вероятно, должен возвращать значение поля FReturnObject. (Или вы можете сделать так, чтобы read аксессор свойства просто ссылался на FReturnObject напрямую.)
function TResponseObject<T>.GetReturnObject: T;
begin
Result := FReturnObject;
end;
На самом деле трудно ответить на вопрос № 3, поскольку я не знаю, что вы пытаетесь с этим сделать, но, надеюсь, мои ответы на первые два вопроса помогут вам вернуться на правильный путь. Просто помните, что дженерики не должны сбивать с толку; в основном это просто замена типа. Где бы вы ни использовали обычный тип в неуниверсальной подпрограмме, вы можете заменить его на <T>
для создания универсальной подпрограммы, а затем заменить любой тип, который соответствует ограничениям для этого конкретного T
.