Delphi XE: конструктор класса не вызывается в классе, использующем универсальные шаблоны

Рассмотрим следующий пример (я использую Delphi XE):

program Test;

{$APPTYPE CONSOLE}

type
  TTestClass<T> = class
  private
    class constructor CreateClass();
  public
    constructor Create();
  end;

class constructor TTestClass<T>.CreateClass();
begin
  // class constructor is not called. this line never gets executed!
  Writeln('class created');
end;

constructor TTestClass<T>.Create();
begin
  // this line, of course, is printed
  Writeln('instance created');
end;

var
  test: TTestClass<Integer>;

begin
  test := TTestClass<Integer>.Create();
  test.Free();
end.

Конструктор класса никогда не вызывается, и поэтому строка «класс создан» не печатается. Однако, если я удалю обобщение и сделаю TTestClass стандартным классом TTestClass , все будет работать, как ожидалось.

Я что-то упускаю из-за дженериков? Или это просто не работает?

Любые мысли по этому поводу приветствуются!

Спасибо, --Stefan -

11
задан Schafsmann 29 February 2012 в 15:02
поделиться