Referenzen bestehen intern aus einem geheimgehalten Interface.
Und ein Interfacezeiger ist nunmal auch nur ein Pointer.
Schade eigentlich, denn durch die Geheimhaltung und mangels entsprechender öffentlicher Methoden kann man Referenzen dadurch nicht vergleichen, bzw. prüfen was sich darin befindet.
Anonyme Methoden sind ein Interface mit einer Invoke Methode, welche die passenden Parameter hat.
Das kann man testen, indem man einfach das hier schreibt
Delphi-Quellcode:
type
TProcObject = class(TInterfacedObject, TProc)
public
procedure Invoke;
end;
Weiterhin kann man über
RTTI auf das Object, was dahinter steckt, zugreifen (siehe
dieser Artikel).
Vergleichen und in einer Liste speichern müsste somit auch kein Problem sein. Man kann auch andersrum eine anonyme Methode an ein Event hängen (man muss sich nur klar machen, dass ein Event kein managed type ist, dementsprechend muss man sich da dann selber drum kümmern) Wie das geht, hat Barry
in diesem Artikel beschrieben.
Mit diesem Wissen kann man eigentlich fast alles mit einer anonymen Methode machen.