Generics löst Methodentypen nicht korrekt auf

Folgendes berücksichtigen

{$APPTYPE CONSOLE}

uses
  Generics.Collections;

type
  TObjProc = procedure of object;
  TFoo = class
    public procedure DoFoo;
    public procedure DoBar;
  end;

procedure TFoo.DoFoo;
begin
  WriteLn('foo');
end;

procedure TFoo.DoBar;
begin
  WriteLn('bar');
end;

var
  ProcList : TList<TObjProc>;
  Foo : TFoo;
  aProc : TObjProc;
begin
  Foo := TFoo.Create;
  ProcList := TList<TObjProc>.Create;
  ProcList.Add(Foo.DoFoo);
  ProcList.Add(Foo.DoBar);
  for aProc in ProcList do aProc;
  ReadLn;
end.

Dies erzeugt die erwartete Ausgabe von

foo
bar

Angenommen, wir möchten eine Prozedur aus der Liste zuweisen. Aufzählen funktioniert wie oben. Das funktioniert auch:

aProc := ProcList.Items[0];
aProc;

Aber dies löst einen Compilerfehler aus :

aProc := ProcList.First;
// E2010 Incompatible types: 
//'procedure, untyped pointer or untyped parameter' and 'TObjProc'

Was ist doppelt ungerade seit

function TList<T>.First: T;
begin
  Result := Items[0];
end;

So was ist los

Betrifft dies auch neuere Versionen von Delphi? Ich bin versucht, dies zu überprüfen, wenn eine vernünftige Erwartung besteht, dass dies funktionieren sollte (was meiner Meinung nach der Fall ist).

Antworten auf die Frage(1)

Ihre Antwort auf die Frage