Рассмотрим следующий пример (я использую 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.
Конструктор класса никогда не вызывается и, следовательно, строка 'class created' не печатается.
Однако, если я удалю обобщение и сделаю TTestClass<T>
в стандартный класс TTestClass
, все будет работать так, как ожидалось.
Я что-то пропустил с помощью дженериков? Или это просто не работает?
Любые мысли об этом будут восприняты!
Спасибо, --Stefan -