Generics constructor with parameter constraint?

后端 未结 5 1009
死守一世寂寞
死守一世寂寞 2020-12-11 02:54
TMyBaseClass=class
  constructor(test:integer);
end;

TMyClass=class(TMyBaseClass);

TClass1=class()
  public
    FItem: T;
    pr         


        
5条回答
  •  春和景丽
    2020-12-11 02:58

    You might consider giving the base class an explicit method for initialization instead of using the constructor:

    TMyBaseClass = class
    public
      procedure Initialize(test : Integer); virtual;
    end;  
    
    TMyClass = class(TMyBaseClass)
    public
      procedure Initialize(test : Integer); override;
    end;
    
    procedure TClass1.Test;
    begin
      FItem:= T.Create;
      T.Initialize(42);
    end;
    

    Of course this only works, if the base class and all subclasses are under your control.

提交回复
热议问题