COM を介してアプリケーションの特定の部分にアクセスしようとしています。主な理由は、Delphi アプリケーションが .NET アプリケーションで特定のサービスを呼び出せるようにする必要があるためです。
ServicedComponent クラスから継承する COM を介していくつかのメソッドを公開し、正常に動作するようにしました。
ここで、特定のことが発生したときにクライアントに警告できるように、クライアントにイベントを発生させる必要があります。現在、次のようなものがあります。
public interface IEvents
{
void OnMessage();
}
[EventClass]
[ComVisible(true)]
public class MyEventsClass : ServicedComponent, IEvents
{
public void OnMessage()
{
}
}
しかし、Delphi から TypeLibrary をインポートすると、次のようになります。
IEvents = interface(IDispatch)
['{E7605303-F968-3509-829B-BF70084053C4}']
procedure OnMessage; safecall;
end;
IEventsDisp = dispinterface
['{E7605303-F968-3509-829B-BF70084053C4}']
procedure OnMessage; dispid 1610743808;
end;
使い方がよくわからないもの。MyService.Register(IEvents events) を介して実装してサービスに提供できる IUnknown インターフェイスを期待していました...
私はここで完全に迷っていると思います... .NET で COM+ イベントを適切に実装する方法についてのアドバイスや参照はありますか?