Allerdings, wie ich bereits schrieb: safecall ist ein bissel besser.
Standardmäßig werden Interface Methoden in .Net per sdtcall mit HResult durch den
COM/Interop Layer geschleust.
Dieser Layer wird auch bei P/Invoke (klassische DLLs in .Net) verwendet.
Das entspricht dem was safecall in Delphi macht.
Man lernt immer noch dazu
Danke für die detaillierte Beschreibung =)
Ich würde aber Events in 2 Typen aufteilen: Den eigentlichen Event und einen Subscriber:
Delphi-Quellcode:
INotifyEvent = interface(IUnknown)
['{EE9407DD-2337-4DFC-BC35-A40C4FA0A1A7}']
procedure Add(const hanlder: INotifyEventHandler); safecall;
procedure Remove(const hanlder: INotifyEventHandler); safecall;
end;
INotifyEventHandler = interface(IUnknown)
['...']
procedure Invoke(const sender : IUnknown); safecall;
end;
Das Konzept ist bei Java z.B. gang und gebe.
Ich hatte das auch
hier schonmal angeschnitten, aber ich sehe das Bedarf bald einer Überarbeitung