Рассмотрим следующий пример (я использую 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 -