How can the subclass constructor be called from the parent class?
<p>Is there a way to invoke Create of the subclass from the parent class? Below there is this Duplicate method in which I want the constructor of the subclass to be invoked instead, so that the test at the bottom succeeds. </p>

<pre><code>type

  IBla&lt;T&gt; = interface(IInvokable)
    ['{34E812BF-D021-422A-A051-A492F25534C4}']
    function GetIntFromIface(): Integer;
    function Duplicate(): IBla&lt;T&gt;;
  end;

  TClassA&lt;T&gt; = class(TInterfacedObject, IBla&lt;T&gt;)
  protected
    function GetInt(): Integer; virtual;
  public
    function GetIntFromIface(): Integer;
    function Duplicate(): IBla&lt;T&gt;;
  end;

  TClassB = class(TClassA&lt;Integer&gt;, IBla&lt;Integer&gt;)
  protected
    function GetInt(): Integer; override;
  end;

function TClassA&lt;T&gt;.Duplicate: IBla&lt;T&gt;;
begin
  Exit(TClassA&lt;T&gt;.Create());
end;

function TClassA&lt;T&gt;.GetInt: Integer;
begin
  Exit(1);
end;

function TClassA&lt;T&gt;.GetIntFromIface: Integer;
begin
  Exit(GetInt());
end;

function TClassB.GetInt: Integer;
begin
  Exit(2);
end;

procedure TestRandomStuff.Test123;
var
  o1, o2: IBla&lt;Integer&gt;;
begin
  o1 := TClassB.Create();
  o2 := o1.Duplicate();    
  Assert.AreEqual(o2.GetIntFromIface, 2);
end;
</code></pre>