Можно ли создать общий метод с ограничениями? - PullRequest
3 голосов
/ 11 января 2012

Я создал следующий простой класс в своем коде и получаю «TObject не является допустимым ограничением» сообщение об ошибке.

  TTest = class
    class function Test<T:TObject>(Dummy: integer): string;
  end;
  ... 
  class function TTeste.Teste<T>(Dummy: integer): string;
  begin
    Result := 'Compiled';
  end;

Что я делаю не так? Это возможно? (Вы можете включить опцию, доступную в более поздних версиях, чем D2010, поскольку мы получим наши лицензии XE2 в ближайшие 2 недели).

1 Ответ

8 голосов
/ 11 января 2012

Попробуйте ограничение class:

TTest = class
  class function Test<T:class>(Dummy: integer): string;
end;

Он может принимать не только обычные классы, но и взаимодействовать с этим ограничением (в C # это происходит, и дженерики Delphi имитируют дженерики C #).

...